Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Breakpoint не работает.


Страницы:   1 2

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 посмотреть не судьба?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо