Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Внизпочему точка останова не активна? Найти похожие ветки
← →
картман © (2011-03-10 15:53) [0]Всем доброго времени суток!
if Condition then
Exit;
на Exit; ставлю точку останова - не активна, но точно отрабатывает. Почему?
← →
clickmaker © (2011-03-10 16:05) [1]галки debug в настройках проекта стоят?
← →
картман © (2011-03-10 16:07) [2]стоят
← →
stas © (2011-03-10 16:10) [3]Rebuild сделайте
← →
картман © (2011-03-10 16:20) [4]
> stas © (10.03.11 16:10) [3]
>
> Rebuild сделайте
делал.
может из-за типов в условии:
Key: AnsiChar
FText: PAnsiChar
...
if Key = FText[FCurrPos] then
Exit;
?
← →
stas © (2011-03-10 16:21) [5]а если на if поставить активна?
← →
картман © (2011-03-10 16:24) [6]
> а если на if поставить активна?
да
← →
OW © (2011-03-10 16:24) [7]rebild - ребилдом.. а все таки:
Close
erase *.~*
erase *.dcu
erase *.ddp
erase *.rar
erase *.rsm
erase *.map
run Delphi
F9 ?
← →
картман © (2011-03-10 16:27) [8]
> OW © (10.03.11 16:24) [7]
делал
if Node^.Key = FText[FCurrPos] then
begin
ShowMessage("sadf");
Exit;
end;
а вот так работает.
Может компилятор что-то там свое неочевидное делает? Оптимизацию отключил.
← →
stas © (2011-03-10 16:54) [9]а если точку поставить на if а потом - пошагово, заходит на exit?
← →
Amoeba_ (2011-03-10 17:12) [10]Ставь точку останова не на Exit, а на end процедуры. Если Condition не выполняется, то сразу попадешь туда.
← →
картман © (2011-03-10 17:35) [11]
> а если точку поставить на if а потом - пошагово, заходит
> на exit?
неа, сразу на end.
> Ставь точку останова не на Exit, а на end процедуры. Если
> Condition не выполняется, то сразу попадешь туда.
это понятно - мне интересно "ну пачиму?" И потом, почему [8]? По идее, должно быть так же, ан нет.
← →
harisma © (2011-03-10 17:41) [12]А в дельфе при трассировке на Exit не попадает никогда. :) Особенности компилятора, однако.
← →
картман © (2011-03-10 17:49) [13]
> harisma © (10.03.11 17:41) [12]
поадает, см. [8]
← →
Anatoly Podgoretsky © (2011-03-10 21:58) [14]Ставь точку на IF, а это просто особенность отладчика
← →
картман © (2011-03-10 22:54) [15]
> особенность отладчика
офигеть
← →
sniknik © (2011-03-10 23:42) [16]похоже он "сливает" все в одну строку-команду.
а так попробуйif Condition then begin
Exit;
end;
← →
clickmaker © (2011-03-10 23:54) [17]собственно, сам отладчик в момент запуска ставит синие точки на строчках, где разрешены бряки
← →
картман © (2011-03-11 00:09) [18]
> сам отладчик в момент запуска ставит синие точки на строчках,
> где разрешены бряки
ну да - на Exit не ставит.
> sniknik © (10.03.11 23:42) [16]
>
> похоже он "сливает" все в одну строку-команду.
> а так попробуй
> if Condition then begin
> Exit;
> end;
пробовал - не ставит.
← →
MonoLife © (2011-03-11 03:39) [19]после Exit до end еще что-нить есть?
← →
brother © (2011-03-11 06:04) [20]встречался с подобным, решал бряком на IF, думаю, что это [17]
← →
картман © (2011-03-11 11:51) [21]
> после Exit до end еще что-нить есть?
есть
← →
Inovet © (2011-03-11 12:06) [22]Наверно в этом виде на exit нет машинного кода. А зачем он там.
← →
Anatoly Podgoretsky © (2011-03-11 12:24) [23]> Inovet (11.03.2011 12:06:22) [22]
Его и нет, поэтому и точки нет. Код в самом IF
← →
картман © (2011-03-11 15:47) [24]
> Inovet © (11.03.11 12:06) [22]
>
> Наверно в этом виде на exit нет машинного кода. А зачем
> он там.
да фик знает, зачем он там - хотя бы затем, чтоб мне отлаживать удобней было.
← →
clickmaker © (2011-03-11 15:56) [25]> чтоб мне отлаживать удобней было
if condition then begin
while(false) do;
Exit;
end;
-)
← →
Inovet © (2011-03-11 16:45) [26]> [24] картман © (11.03.11 15:47)
> хотя бы затем, чтоб мне отлаживать удобней было
Нет ты спросил
> [0] картман © (10.03.11 15:53)
> на Exit; ставлю точку останова - не активна, но точно отрабатывает. Почему?
Вот и ответили. Зачем бы там нужна конструкция из двух переходов, когда можно один с инверсией условия, Что-нибудь навроде:
test eax
jz end_if
jmp end_proc ; exit
end_if:
...
end_proc:
или
test eax
jnz end_proc
...
end_proc:
← →
antonn © (2011-03-11 17:17) [27]
> clickmaker © (11.03.11 15:56) [25]
>
> > чтоб мне отлаживать удобней было
>
> if condition then begin
> while(false) do;
> Exit;
> end;
>
> -)
>
и не отоптимизирует? :)
← →
clickmaker © (2011-03-11 17:19) [28]> и не отоптимизирует? :)
на время отладки можно выключить.
а для придания коду крутости можно и
asm NOP end;
вместо while
← →
картман © (2011-03-11 17:32) [29]
> clickmaker © (11.03.11 17:19) [28]
>
> > и не отоптимизирует? :)
>
> на время отладки можно выключить.
> а для придания коду крутости можно и
> asm NOP end;
> вместо while
так почему бы компилятору на время отладки так не делать?
> Inovet © (11.03.11 16:45) [26]
>
> > [24] картман © (11.03.11 15:47)
> > хотя бы затем, чтоб мне отлаживать удобней было
>
> Нет ты спросил
> [0] картман © (10.03.11 15:53)
> на Exit; ставлю точку останова - не активна, но точно отрабатывает. Почему?
да, спросил - издалека.
← →
clickmaker © (2011-03-11 17:37) [30]> так почему бы компилятору на время отладки так не делать?
походу это багофича именно отладчика.
компилятору-то с чего лишний код лепить?
← →
картман © (2011-03-11 18:22) [31]
> походу это багофича именно отладчика.
> компилятору-то с чего лишний код лепить?
это я по-неграмотности возложил ответственность на компилятор(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.004 c