Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Breakpoint не работает.   Найти похожие ветки 

 
olookin ©   (2004-11-15 11:01) [0]

Вход в процедуру Button1Click не выполняется (нет останова на брекпойнте), хотя двойной клик на кнопку Button1 в дизайн-тайме выбрасывает имеено на эту процедуру. Более того, при нажатии на кнопку что-то все-таки выполняется, но что - остается загадкой. Этому не предшествуют работы с памятью, с указателями или с чем-либо еще, могущим вызвать непонятное поведение. Ошибок также не возникает. Отладчик успешно работает с брекпойнтами в других модулях. В этом же модуле отладчик не останавливается ни на одном брекпойнте, куда бы он не был поставлен.


 
Плохиш ©   (2004-11-15 11:05) [1]

небось в модуле {$D-} {$L-} понаставил? в другом модуле все обработчики по-перекрывал, а inherited позабыл.
А так жди возвращения телепатов из отпуска.


 
olookin ©   (2004-11-15 11:12) [2]

[1] Плохиш ©   (15.11.04 11:05)

1. Директив, кроме {$R *.DFM}, нет никаких.
2. Обработчики не перекрывал, так как вообще не знаю как это делать.

Про телепатов - как я могу еще задать свой вопрос? Модуль выставить? Там ничего интересного нет.


 
uny ©   (2004-11-15 11:17) [3]

может в этой процедуре ничего не делается. добавить какой нибудь beep и посмотреть


 
Плохиш ©   (2004-11-15 11:20) [4]


> olookin ©   (15.11.04 11:12) [2]

Попробуй сделать "Build all"


 
olookin ©   (2004-11-15 11:22) [5]

[3] uny ©   (15.11.04 11:17)

Например, в другой форме ставлю брекпойнт на выражение:

procedure TEQAPbase.MDFCorrector1Click(Sender: TObject);
begin
 CorrectorForm.Show; //breakpoint
end;

У "странной" формы CorrectorForm есть событие OnShow. Однако даже такой брекпойнт вызывает переход не в процедуру CorrectorForm.OnShow, а в событие TEQAPbase.EQAPbaseOnMessage. Ставя брекпойнт на появление любой иной формы проекта, или вообще в любое место, исключая "странный" модуль, я получаю желаемый результат (т.е. функционирование брекпойнта).


 
olookin ©   (2004-11-15 11:23) [6]

[4] Плохиш ©   (15.11.04 11:20)
Попробуй сделать "Build all"

Не помогло.


 
Плохиш ©   (2004-11-15 11:37) [7]


> olookin ©   (15.11.04 11:22) [5]

А ты *nix не злоупотребляешь? Скорее всего у тебя в файле перевод строки из одного символа, проверь и замени все на #13#10.


 
GuAV ©   (2004-11-15 11:37) [8]

Уверен что именно эта версия модуля подключается, может копия какая ?


 
olookin ©   (2004-11-15 12:40) [9]

[8] GuAV ©   (15.11.04 11:37)

Уверен на 100%.

[7] Плохиш ©   (15.11.04 11:37)
А ты *nix не злоупотребляешь? Скорее всего у тебя в файле перевод строки из одного символа, проверь и замени все на #13#10.

Все писано прямо в дельфях под Win2000. Разве только то, что я просто скопировал когда-то код из другой формы, вставил в нынешнюю "странную", и переопределил обработчики событий на компоненты в "странной" форме? Но такое я делал неоднократно с другими модулями и не встречал никаких проблем.


 
Pentium133 ©   (2004-11-15 13:49) [10]


>[8] GuAV ©   (15.11.04 11:37)
>
> Уверен на 100%.

Откуда такая уверенность. В заголовке окна какой путь прописан?


 
Плохиш ©   (2004-11-15 14:09) [11]


> olookin ©   (15.11.04 12:40) [9]

>  просто скопировал когда-то код из другой формы, вставил
> в нынешнюю "странную",

Так в hex посмотреть не судьба?


 
Pentium133 ©   (2004-11-15 14:17) [12]

99% он трасирует копию файла. У меня такое бывало. И ещё с пеной у рта доказывал что "нет, это не копия!"


 
GuAV ©   (2004-11-15 14:35) [13]

Вот-вот... всё же пройдись поиском и прибей все копии, и dcu тоже оставь один .pas


 
Sirakuz ©   (2004-11-15 15:36) [14]

У тебя брейкпойнт активный? Всысле после компиляции рядом с этим кодом появляются синие кружочки? Если да и если ты точку останова ставишь на одном из этих кружочков то, возможно, обработчик нажатия переопределяется в другом месте; если нет - то дебагер не "подхватил" этот файл или не откомпилил этот код по различным причинам.


 
olookin ©   (2004-11-15 17:18) [15]

[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)

Активный (в том смысле, что не считает строку мертвой), и нигде ничего не переопределено у меня.


 
Verg ©   (2004-11-15 18:17) [16]

Название модуля, название файлов pas и dfm - все равны?


 
olookin ©   (2004-11-15 18:21) [17]

[16] Verg ©   (15.11.04 18:17)

Все одинаковое.


 
Sirakuz ©   (2004-11-15 18:22) [18]

Остановись в любом другом месте
Evaluate value (Ctrl-F7)
Туда впиши примерно это:
@MainFormName.Button1.OnClick
Там будет указатель на обработчик
Дальше жмёшь Alt-Ctrl-C - Вызываешь окно CPU;
Кликаешь в ассеблеррный листинг; Ctrl-G - Перейти на адрес. И вводишь в это окно свой адрес, который указатель на обработчик. Смотришь совпадает ли это с твоим исходным кодом. Вобщем анализируешь.


 
Verg ©   (2004-11-15 18:25) [19]


> Например, в другой форме ставлю брекпойнт на выражение:
>
> procedure TEQAPbase.MDFCorrector1Click(Sender: TObject);
> begin
>  CorrectorForm.Show; //breakpoint
> end;


А где и как она создается? CorrectorForm.


 
olookin ©   (2004-11-15 18:28) [20]

[18] Sirakuz ©   (15.11.04 18:22)

Ну, я не настолько крут, чтобы реализовать это, даже если мне предварительно все разжуют.

[19] Verg ©   (15.11.04 18:25)

В дизайнере создана. Не динамически т.е.


 
Плохиш ©   (2004-11-15 18:29) [21]


> olookin ©   (15.11.04 17:18) [15]
> [11] Плохиш ©   (15.11.04 14:09)
> Так в hex посмотреть не судьба?
>
> Объясни пожалуйста, что именно мне в Hex смотреть...

Открываешь pas-файл и смотришь: В файле должны встречаться только сочетания кодов #13#10, а не по-отдельности #13 или #10.


 
Verg ©   (2004-11-15 18:30) [22]


> В дизайнере создана. Не динамически т.е.


Ну так покажи как она создана.
В файле dpr это должно быть.


 
olookin ©   (2004-11-15 18:35) [23]

[21] Плохиш ©   (15.11.04 18:29)

Не встречается по отдельности.


 
olookin ©   (2004-11-15 18:37) [24]

[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.


 
Плохиш ©   (2004-11-15 18:42) [25]

Ну что тут скажешь?
Выкладывай куда-нибуть свой "lookin10.pas", время будет посмотрим.


 
olookin ©   (2004-11-15 18:43) [26]

Хе-хе. Удалил я нафиг этот модуль и создал заново пустой с теми же именами. Брекпойнт заработал.


 
olookin ©   (2004-11-15 19:05) [27]

А вот тут я совершенно ничего не понимаю. Я нашел строку, комментирование которой включает таки брекпойнты. Строка находится в процедуре, которая не вызывается по нажатию на кнопку или из OnShow формы. Равно как не вызывается и при создании формы. Нигде, короче, не вызывается. Строка выглядит так:

 cc:="";

причем cc: array [0..65535] of char;

Поскольку я ничего не понял, то прошу рассказать мне, где тут ошибка и в чем она заключается. Сразу скажу, что неоднократно приравнивал пустой строке массивы Char и ни разу не видел такой реакции. Более того, в еще одном модуле массив такой же размерности, и туда по брекпойнту захожу без проблем.


 
Lin7   (2004-11-15 19:30) [28]

У меня подобные глюки пару раз вылезали под D7 (WinXP) + иногда проект просто не компилился - D7 вываливала ошибку. Помогало закрыть+открыть проект или перегрузить D7.


 
Alex_Petr ©   (2004-11-16 01:01) [29]

Было подобное ( тоже D7 (WinXP)).
Помогло:
Создал новый unit и вручную (Copy/Paste) перенес весь код.


 
olookin ©   (2004-11-16 08:33) [30]

[29] Alex_Petr ©   (16.11.04 01:01)
Помогло: Создал новый unit и вручную (Copy/Paste) перенес весь код.

А мне вот как раз это не помогло к сожалению.



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.023 c
14-1100286504
Muchacho
2004-11-12 22:08
2004.11.28
Каким должен быть серийный номер?


1-1100261601
Jann
2004-11-12 15:13
2004.11.28
StatusBar


3-1098961483
BigError
2004-10-28 15:04
2004.11.28
Что-то никак не соображу как правильно сделать..


14-1100291108
Knight
2004-11-12 23:25
2004.11.28
Почему антивирусы грузяться так поздно...


3-1099310895
Артем К.
2004-11-01 15:08
2004.11.28
Проблемы с вычисляемым полем