IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила форума Всем прочитать перед созданием темы!
 
Ответить в данную темуНачать новую тему
Delphi точки остава, Не работают точки остова
Gvido
сообщение 11.02.2005 - 16:19
Сообщение #1


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 3749
Сообщений: 139
Регистрация: 26.07.2003
Из: г. Уссурийск
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 0 раз(а)



Привет всем!!! Крышу рвет!!!!
В одном из моих проэктов не работают точки остова вообще.
ставиться ставятся, но при запуске на отладку (F9) они отключаются.
А очень нужна отладка!!!!
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Nuclear Death
сообщение 14.02.2005 - 12:12
Сообщение #2


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 405
Сообщений: 205
Регистрация: 21.03.2003
Из: Санкт-Петербург
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 2 раз(а)



Какая версия Delphi ? На каких строчка ставишь останов (breakpoint) ?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Gvido
сообщение 15.02.2005 - 08:47
Сообщение #3


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 3749
Сообщений: 139
Регистрация: 26.07.2003
Из: г. Уссурийск
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 0 раз(а)



Цитата(Nuclear Death @ 14.02.2005 - 12:12)
Какая версия Delphi ? На каких строчка ставишь останов (breakpoint) ?
*


Delphi 7 Prof
Точки остава внутри процедуры. Они должны тут срабатывать.
Запускаю по F9 и точки сразу переходят в "крест".

И попутный вопрос ( тоже крышу рвет) wallbash.gif
вот кусок кода:
Код
     If (GlobalData=nil) then
       begin
             CloseHandle(MMFileHandle);
             writeln(mylog,'[ ' + FormatDateTime('dd.mm.yyyy:HH:tt',now)+' ]' + 'Тра-ляляляля');
             Exit;
       end;

GlobakData - указатель на структуру и он точно не nil
В отладке это четко видно!!!! Но, тем не менее не отрабатывается это условие правильно и происходит обработка вложенных операторов.
Реально условие на проверке выдает False, а обрабатывается как TRUE.
Это мой Баг, или баг Delphi????????


i

Если никому не трудно, просьба куски исходного текста вставлять в тэг CODE. Так гораздо читабельнее
 


Сообщение отредактировал Fallcom - 16.02.2005 - 13:38
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Nuclear Death
сообщение 15.02.2005 - 19:53
Сообщение #4


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 405
Сообщений: 205
Регистрация: 21.03.2003
Из: Санкт-Петербург
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 2 раз(а)



Скорее всего, глюк Delphi, хотя всё может быть smile.gif . Если захочешь обойти\решить проблему, попробуй так : в отдельную переменную запиши адрес структуры, а потом сравнивай значение переменной с NIL. Может быть, что-нибудь интересное увидишь.
Добавлено Nuclear Death в [mergetime]1108486434[/mergetime]
Почему такое происходит с точками - не могу сказать, однако есть вариант - по F4 попробуй добраться до строки, где нужен останов.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Fallcom
сообщение 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 проскакивает потому, что считает указатель не распределенным. Возможно что-то в опциях компилятора.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Gvido
сообщение 16.02.2005 - 14:20
Сообщение #6


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 3749
Сообщений: 139
Регистрация: 26.07.2003
Из: г. Уссурийск
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 0 раз(а)



Спасибо, попробую.
Но пока обошел тем что вместо Exit; поставил Abort;
Сам прикол в том что два верхних то оператора в условном операторе не обрабатываются, а происходит переход сразу на Exit при любом логическом результате!!!!!!

Сообщение отредактировал Fallcom - 30.08.2005 - 13:37
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 20.04.2024 - 02:01