Главное меню |
Здравствуйте, гость ( Вход | Регистрация )
Главное меню |
Don |
11.5.2008, 17:23
Сообщение
#21
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
проверь в слот mainwindow::restart() входит программа? Сообщение пошли для проверки. да и кстати про принудительный репаинт, я тебе в прошлой истории говорил. Сам слот restart() работает. Проверял с помощью QMessaggeBox. А вот када в нём обращаешся к даннам класса Life, работа проги прекращается и выпадает окошко с предупреждением: Unhandled exception at 0x0040270e in life.exe: 0xC0000005: Access violation writing location 0xcdcdcde1. и внизу три кнопки Continue, Break, Ignore (не дуступна). Это связано по ходу с кривым обращением к данным класса Life. Помогите плиз решить проблему. |
|
|
Don |
11.5.2008, 21:15
Сообщение
#22
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ладно, поскажите пожалуйста хотя бы как средствами С++ или Qt можно найти и запустить exe-файл?
|
|
|
Admin |
11.5.2008, 21:30
Сообщение
#23
|
Администратор Группа: Администратор Сообщений: 646 Регистрация: 9.10.2007 Из: crossplatform.ru Пользователь №: 1 Спасибо сказали: 17 раз(а) Репутация: 2 |
Примерно так:
Это связано по ходу с кривым обращением к данным класса Life. Помогите плиз решить проблему. Угу именно так, я бы тебе посоветовл сделать так:1. Из конструктора класса Life вынести код: в отдельную функцию, и вызывать данную функцию в конструкторе и в слоте restart. Ну и правки нужно будет делать не в двую участках кода, а только в данной функции класса.2. Посмотри в отладчике указатель board валиден или нет, если не валиден, то ищи где он у тебя портится... |
|
|
Don |
11.5.2008, 21:43
Сообщение
#24
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Заносил в отдельную фукцию, всё равно из mainwindow.cpp не работает. А что значит валиден?
|
|
|
Litkevich Yuriy |
11.5.2008, 21:50
Сообщение
#25
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
валиден - показывает в конкретное место, а не на звезды
|
|
|
ViGOur |
11.5.2008, 21:51
Сообщение
#26
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Указывает на валидный участок памяти, а не на 0x000000, 0xffffff или 0xfefefe и т.д.
Наверняка исключение простреливается именно из-за этого. |
|
|
Don |
11.5.2008, 22:09
Сообщение
#27
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
А смотреть в отладчике как? Это компилировать прогу построчно что-ли? Как им вобще пользоваться?
|
|
|
ViGOur |
11.5.2008, 22:12
Сообщение
#28
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Вот можно почитать хорошии статьи по этому поводу:
Отладка в среде Visual C++
Сообщение отредактировал ViGOur - 11.5.2008, 22:17 |
|
|
Don |
11.5.2008, 22:17
Сообщение
#29
|
Студент Группа: Новичок Сообщений: 59 Регистрация: 19.3.2008 Пользователь №: 127 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вот можно почитать хорошую статью по этому поводу: Возможности встроенного отладчика Visual C++ Спасибо, конечно! Я прочту. Но можно в кратце, в двух словах. Как его запустить? И где мне там глянуть валиден ли мой board или нет? Просто нужно поскорей |
|
|
ViGOur |
11.5.2008, 22:25
Сообщение
#30
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Нужно поставить точку останова, на твоей проблемной строчке. Делается это так, поставь курсор на той строчке, что ты хочешь отладить и нажми кнопку F9, после чего с лева от нее должен появится красный кружечек, который называется брэкпоинт.
Затем нажимаешь кнопку F5, после чего запускается твое приложение, и делаешь в нем то, чтобы выполнился твой проблемный участок кода, когда это произойдет студия бросит тебя на установденный брэйкопоинт. Далее, чтобы пошагово ходить нужно работать клавишами F10 (шаг далее) или F11 (шаг в функцию)... Далее объяснять не буду, так как назначение разного рода окошек описывается в статье... p.s. я тебе выше добавил еще статей. |
|
|
Текстовая версия | Сейчас: 25.4.2024, 17:21 |