![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Breakpoint не работает.
olookin © (2004-11-15 11:01:00)Вход в процедуру Button1Click не выполняется (нет останова на брекпойнте), хотя двойной клик на кнопку Button1 в дизайн-тайме выбрасывает имеено на эту процедуру. Более того, при нажатии на кнопку что-то все-таки выполняется, но что - остается загадкой. Этому не предшествуют работы с памятью, с указателями или с чем-либо еще, могущим вызвать непонятное поведение. Ошибок также не возникает. Отладчик успешно работает с брекпойнтами в других модулях. В этом же модуле отладчик не останавливается ни на одном брекпойнте, куда бы он не был поставлен.
olookin (2004-11-16 08:33:00) [1][29] Alex_Petr © (16.11.04 01:01)
Помогло: Создал новый unit и вручную (Copy/Paste) перенес весь код.
А мне вот как раз это не помогло к сожалению.
Alex_Petr (2004-11-16 01:01:00) [2]Было подобное ( тоже D7 (WinXP)).
Помогло:
Создал новый unit и вручную (Copy/Paste) перенес весь код.
Lin7 (2004-11-15 19:30:00) [3]У меня подобные глюки пару раз вылезали под D7 (WinXP) + иногда проект просто не компилился - D7 вываливала ошибку. Помогало закрыть+открыть проект или перегрузить D7.
olookin (2004-11-15 19:05:00) [4]А вот тут я совершенно ничего не понимаю. Я нашел строку, комментирование которой включает таки брекпойнты. Строка находится в процедуре, которая не вызывается по нажатию на кнопку или из OnShow формы. Равно как не вызывается и при создании формы. Нигде, короче, не вызывается. Строка выглядит так:
cc:='';
причем cc: array [0..65535] of char;
Поскольку я ничего не понял, то прошу рассказать мне, где тут ошибка и в чем она заключается. Сразу скажу, что неоднократно приравнивал пустой строке массивы Char и ни разу не видел такой реакции. Более того, в еще одном модуле массив такой же размерности, и туда по брекпойнту захожу без проблем.
olookin (2004-11-15 18:43:00) [5]Хе-хе. Удалил я нафиг этот модуль и создал заново пустой с теми же именами. Брекпойнт заработал.
Плохиш (2004-11-15 18:42:00) [6]Ну что тут скажешь?
Выкладывай куда-нибуть свой 'lookin10.pas', время будет посмотрим.
olookin (2004-11-15 18:37:00) [7][22] Verg © (15.11.04 18:30)
Это показать?
uses
...
lookin10 in 'lookin10.pas' {CorrectorForm},
...
;
{$R *.TLB}
{$R *.RES}
begin
Application.Initialize;
...
Application.CreateForm(TCorrectorForm, CorrectorForm);
...
Application.Run;
end.
olookin (2004-11-15 18:35:00) [8][21] Плохиш © (15.11.04 18:29)
Не встречается по отдельности.
Verg (2004-11-15 18:30:00) [9]
> В дизайнере создана. Не динамически т.е.
Ну так покажи как она создана.
В файле dpr это должно быть.
Плохиш (2004-11-15 18:29:00) [10]
> olookin © (15.11.04 17:18) [15]
> [11] Плохиш © (15.11.04 14:09)
> Так в hex посмотреть не судьба?
>
> Объясни пожалуйста, что именно мне в Hex смотреть...
Открываешь pas-файл и смотришь: В файле должны встречаться только сочетания кодов #13#10, а не по-отдельности #13 или #10.
olookin (2004-11-15 18:28:00) [11][18] Sirakuz © (15.11.04 18:22)
Ну, я не настолько крут, чтобы реализовать это, даже если мне предварительно все разжуют.
[19] Verg © (15.11.04 18:25)
В дизайнере создана. Не динамически т.е.
Verg (2004-11-15 18:25:00) [12]
> Например, в другой форме ставлю брекпойнт на выражение:
>
> procedure TEQAPbase.MDFCorrector1Click(Sender: TObject);
> begin
> CorrectorForm.Show; //breakpoint
> end;
А где и как она создается? CorrectorForm.
Sirakuz (2004-11-15 18:22:00) [13]Остановись в любом другом месте
Evaluate value (Ctrl-F7)
Туда впиши примерно это:
@MainFormName.Button1.OnClick
Там будет указатель на обработчик
Дальше жмёшь Alt-Ctrl-C - Вызываешь окно CPU;
Кликаешь в ассеблеррный листинг; Ctrl-G - Перейти на адрес. И вводишь в это окно свой адрес, который указатель на обработчик. Смотришь совпадает ли это с твоим исходным кодом. Вобщем анализируешь.
olookin (2004-11-15 18:21:00) [14][16] Verg © (15.11.04 18:17)
Все одинаковое.
Verg (2004-11-15 18:17:00) [15]Название модуля, название файлов pas и dfm - все равны?
olookin (2004-11-15 17:18:00) [16][12] Pentium133 © (15.11.04 14:17)
99% он трасирует копию файла. У меня такое бывало. И ещё с пеной у рта доказывал что "нет, это не копия!"
Итак, еще раз (а то ошибка сервера, а затем и несколькочасовое выключение инета похерило мое предыдущее сообщение). Физически удалил pas-файл. Dcu оставил. Нажимаю Ctrl-F12 и выбираю похеренный модуль. Разумеется, сообщение Cannot open file... По-моему, это доказывает, что компилирую я именно тот модуль, какой и вижу, а не копию оного...
[11] Плохиш © (15.11.04 14:09)
Так в hex посмотреть не судьба?
Объясни пожалуйста, что именно мне в Hex смотреть...
[14] Sirakuz © (15.11.04 15:36)
Активный (в том смысле, что не считает строку мертвой), и нигде ничего не переопределено у меня.
Sirakuz (2004-11-15 15:36:00) [17]У тебя брейкпойнт активный? Всысле после компиляции рядом с этим кодом появляются синие кружочки? Если да и если ты точку останова ставишь на одном из этих кружочков то, возможно, обработчик нажатия переопределяется в другом месте; если нет - то дебагер не "подхватил" этот файл или не откомпилил этот код по различным причинам.
GuAV (2004-11-15 14:35:00) [18]Вот-вот... всё же пройдись поиском и прибей все копии, и dcu тоже оставь один .pas
Pentium133 (2004-11-15 14:17:00) [19]99% он трасирует копию файла. У меня такое бывало. И ещё с пеной у рта доказывал что "нет, это не копия!"
Плохиш (2004-11-15 14:09:00) [20]
> olookin © (15.11.04 12:40) [9]
> просто скопировал когда-то код из другой формы, вставил
> в нынешнюю "странную",
Так в hex посмотреть не судьба?