Delphi точки остава, Не работают точки остова |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Delphi точки остава, Не работают точки остова |
11.02.2005 - 16:19
Сообщение
#1
|
|
Завсегдатай Группа: Пользователи Пользователь №: 3749 Сообщений: 139 Регистрация: 26.07.2003 Из: г. Уссурийск Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Привет всем!!! Крышу рвет!!!!
В одном из моих проэктов не работают точки остова вообще. ставиться ставятся, но при запуске на отладку (F9) они отключаются. А очень нужна отладка!!!! |
|
|
14.02.2005 - 12:12
Сообщение
#2
|
|
Завсегдатай Группа: Пользователи Пользователь №: 405 Сообщений: 205 Регистрация: 21.03.2003 Из: Санкт-Петербург Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 2 раз(а) |
Какая версия Delphi ? На каких строчка ставишь останов (breakpoint) ?
|
|
|
15.02.2005 - 08:47
Сообщение
#3
|
||||
Завсегдатай Группа: Пользователи Пользователь №: 3749 Сообщений: 139 Регистрация: 26.07.2003 Из: г. Уссурийск Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Цитата(Nuclear Death @ 14.02.2005 - 12:12) Delphi 7 Prof Точки остава внутри процедуры. Они должны тут срабатывать. Запускаю по F9 и точки сразу переходят в "крест". И попутный вопрос ( тоже крышу рвет) вот кусок кода: Код If (GlobalData=nil) then begin CloseHandle(MMFileHandle); writeln(mylog,'[ ' + FormatDateTime('dd.mm.yyyy:HH:tt',now)+' ]' + 'Тра-ляляляля'); Exit; end; GlobakData - указатель на структуру и он точно не nil В отладке это четко видно!!!! Но, тем не менее не отрабатывается это условие правильно и происходит обработка вложенных операторов. Реально условие на проверке выдает False, а обрабатывается как TRUE. Это мой Баг, или баг Delphi????????
Сообщение отредактировал Fallcom - 16.02.2005 - 13:38 |
|||
|
||||
15.02.2005 - 19:53
Сообщение
#4
|
|
Завсегдатай Группа: Пользователи Пользователь №: 405 Сообщений: 205 Регистрация: 21.03.2003 Из: Санкт-Петербург Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 2 раз(а) |
Скорее всего, глюк Delphi, хотя всё может быть . Если захочешь обойти\решить проблему, попробуй так : в отдельную переменную запиши адрес структуры, а потом сравнивай значение переменной с NIL. Может быть, что-нибудь интересное увидишь.
Добавлено Nuclear Death в [mergetime]1108486434[/mergetime] Почему такое происходит с точками - не могу сказать, однако есть вариант - по F4 попробуй добраться до строки, где нужен останов. |
|
|
16.02.2005 - 13:36
Сообщение
#5
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
Насчет BreakPoint.
1. Ты уверен, что у тебя активен именно этот проект? У меня часто бывало, что случайно открываю одновременно два схожих проекта, и в Project Manager выбран не тот, который нужен. Естественно, точки останова в пролете. 2. Еще возможен вариант, если они в DLL, а при этом не назначено HostApplication. 3. Скорее всего это срабатывает оптимизатор - дельфа не компилирует куски текста, которые дальше нигде не участвуют. Например: Код var a: Integer; begin a := 1; end; Присвоение переменной a значение 1 НЕ будет откомпилировано, так как это значение нигде не используется. Естественно, точка останова здесь тоже не сработает. Выхода два - либо отключить оптимизатор в опциях, либо задействовать переменную, в данном примере просто поставить ShowMessage, например. Теперь насчет конструкции. Попробуй вместо сравнения Код If (GlobalData=nil) конструкцию: Код if not Assigned(GlobalData) Во-первых, так красивее, а во-вторых, надежнее. Возможно он на nil проскакивает потому, что считает указатель не распределенным. Возможно что-то в опциях компилятора. |
|
|
16.02.2005 - 14:20
Сообщение
#6
|
|
Завсегдатай Группа: Пользователи Пользователь №: 3749 Сообщений: 139 Регистрация: 26.07.2003 Из: г. Уссурийск Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Спасибо, попробую.
Но пока обошел тем что вместо Exit; поставил Abort; Сам прикол в том что два верхних то оператора в условном операторе не обрабатываются, а происходит переход сразу на Exit при любом логическом результате!!!!!! Сообщение отредактировал Fallcom - 30.08.2005 - 13:37 |
|
|
Текстовая версия | Сейчас: 20.04.2024 - 02:01 |