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

Вниз

почему точка останова не активна?   Найти похожие ветки 

 
картман ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
2-1299205296
kaini
2011-03-04 05:21
2011.06.19
Формирование строки


15-1298803240
Дмитрий С
2011-02-27 13:40
2011.06.19
Помощь по дизайну


2-1299963558
Artemon
2011-03-12 23:59
2011.06.19
QueryPerfomanceCounter


2-1299874810
Евгений_С
2011-03-11 23:20
2011.06.19
RxRichEdit


2-1299748767
laby
2011-03-10 12:19
2011.06.19
При вызове sp часики убрать