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

Вниз

Отладка   Найти похожие ветки 

 
Piter ©   (2004-07-20 02:05) [0]

У меня все больше и больше вопросов скапливается по отладке… Вот сейчас актуальны такие:

1)  можно ли, чтобы программа останавливалась, если в WatchList контролируемая переменная приняла такое то значение?
2)  Можно ли чтобы программа останавливалась при "входе" в определенный модуль? Зачастую бывает, что то, что творится в каком-то модуле не важно и надо просто отловить момент, когда "выполнение" покинет данный модуль.
3)  Можно ли чтоб  программа останавливалась, когда вызывается определенная WinApi функция?


 
reticon ©   (2004-07-20 02:13) [1]

можно, ставь брэйкпойнты


 
ИдиотЪ   (2004-07-20 09:42) [2]

это для тебя существуют модули, а программе пофигу


 
Dmitriy O. ©   (2004-07-20 09:46) [3]

1 можно
2 можно
3 можно


 
vecna ©   (2004-07-20 10:04) [4]

2Piter,
SoftIce вопотит все твои мечтания в реальность.

2Dmitriy O.
как можно средствами дельфи реализовать п.1 ?


 
VMcL ©   (2004-07-20 10:54) [5]

>>vecna ©  (20.07.04 10:04) [4]

>как можно средствами дельфи реализовать п.1

Conditional breakpoints никто, вроде, не отменял.


 
Dmitriy O. ©   (2004-07-20 10:59) [6]


> vecna ©   (20.07.04 10:04) [4]

Правая кнопка мыши на точке останова тебе поможет. Второе меню с верха


 
Суслик ©   (2004-07-20 11:05) [7]


> VMcL ©   (20.07.04 10:54) [5]


> Dmitriy O. ©   (20.07.04 10:59) [6]

Я тоже хотел так ответить. Но если подумать, это не то...

А если переменная меняется в другом месте, где нет breakpoint?

Тогда уж такой совет надо объединять с требованием делать функцию для установки значения и в ней уже делать breakpoint c conditial...


 
vecna ©   (2004-07-20 11:26) [8]

спасибо+)
надо же... уже сколько лет пишу, а туда ни разу не залез =)
аж стыдно


 
Суслик ©   (2004-07-20 11:29) [9]


> надо же... уже сколько лет пишу, а туда ни разу не залез
> =)

значит хорошо пишите, что отлаживаться не надо :)


> VMcL ©   (20.07.04 10:54) [5]

Все самому стало интересно.
conditianal breakpoint остановит выполнение на брекпоитнте, если значение равно чему-то. А если значение было поменяно еще где -то. Тогда как? Т.е. имхо п1 conditional breakpoint не решают.


 
ИдиотЪ   (2004-07-20 11:30) [10]

а со 2-ым пунктом всем ясно?


 
Суслик ©   (2004-07-20 11:32) [11]

Есть ощущение, что Дмитрий Олегович устроил очередную провокацию :))


 
DiamondShark ©   (2004-07-20 11:32) [12]

А вот Вирт вообще считает, что пошаговые отладчики вредны.


 
ИдиотЪ   (2004-07-20 11:34) [13]

лучше подробный лог-файл, с занесением нарушителя в базу данных и тщательным контролем действий


 
Sandman25 ©   (2004-07-20 11:41) [14]

[12] DiamondShark ©   (20.07.04 11:32)

Почему?


 
Dmitriy O. ©   (2004-07-20 11:45) [15]


> Суслик ©   (20.07.04 11:32)
Нет вопросы отладки меня сильно не интересуют
Брекпоинтов и Окна наблюдения мне хватает хотя конечно Аппарат отладки в delphi очень мощьный


 
Суслик ©   (2004-07-20 11:47) [16]


> Dmitriy O. ©   (20.07.04 11:45) [15]
> Нет вопросы отладки меня сильно не интересуют


Экое откровение? И?
Вы дали ответ - "можно" вот и отвечайте как?


 
VMcL ©   (2004-07-20 11:52) [17]

>>Суслик ©  (20.07.04 11:05) [7]

>А если переменная меняется в другом месте, где нет breakpoint?

Это уже другой тип BP - не на execution, а на data change или что-то в этом роде. В Delphi, вроде, есть такая штука - см. меню Debug или как там его.


 
DiamondShark ©   (2004-07-20 11:55) [18]


> Sandman25 ©   (20.07.04 11:41) [14]
> [12] DiamondShark ©   (20.07.04 11:32)
>
> Почему?

http://www.inr.ac.ru/~info21/blackbox/disciplina/poshag_otlad.htm


 
Суслик ©   (2004-07-20 11:58) [19]


> VMcL ©   (20.07.04 11:52) [17]



> а на data change или что-то в этом роде.

что-то не знаю я такого?
А где это?


 
Dmitriy O. ©   (2004-07-20 11:58) [20]


> Суслик ©   (20.07.04 11:47) [16]
Прочтите Архангельского "Программирование в Delhi N"
Там этому целая глава посвещенна. Все подробно описанно на все вопросы и не только сабжевые даны ответы. А копировать сюда эту главу нет смысла все равно не удет


 
Суслик ©   (2004-07-20 12:02) [21]


> Dmitriy O. ©   (20.07.04 11:58) [20]

нет такого в д6...
хоть архангельского читай, хоть кого...
такую муть сам читай.


 
Sandman25 ©   (2004-07-20 12:02) [22]

[18] DiamondShark ©   (20.07.04 11:55)

Понятно, спасибо. ИМХО, это перебор.


 
Dmitriy O. ©   (2004-07-20 12:07) [23]


> Суслик ©   (20.07.04 12:02) [21]
Глава 2.8 Отладка приложений
114-146 (всего 34 стр про отладку) стр Архангельский программирование Delphi 6 Кстати очень интересно и полезно
там все про отладку.


 
Суслик ©   (2004-07-20 12:13) [24]


> Dmitriy O. ©   (20.07.04 12:07) [23]

не пользуйся тем, что у меня этого г нет в наличии (хвала алаху).

скажи - где в среде разработки дельфи есть место, где можно поставить breakpoint на ИЗМЕНЕНИЕ значения переменной?

Не думаю, что у тебя ответ на этот вопрос займет более 30 секунд - написать пункт меню, всех делов то. Вспоминимать думаю тоже не будешь долго - сам же говоришь тАм все про отладку и очень полезное. А сам понимаешь полезность можно оценить только если глубоко все поймешь. А глубоко поймешь - будешь помнить.

Т.о. тебе надо потратить 30 секунд на написание пунткта меню - вспоминание времени не займет (почему см. выше).

Заранее спасибо.


 
Суслик ©   (2004-07-20 12:24) [25]

Ну?
Дмитирий Олегович. Что сник?
Мне так нужна была бы эта функция в рамках дельфи!


 
Dmitriy O. ©   (2004-07-20 12:28) [26]


> Суслик ©   (20.07.04 12:24) [25]


> Суслик ©   (20.07.04 12:13) [24]

Не совсем понял что вам надо. И потом все это смахивает на личную переписку мож в чате поговорим ?


 
Суслик ©   (2004-07-20 12:30) [27]


> Dmitriy O. ©   (20.07.04 12:28) [26]


у хитрец :))))))

Дмитрий Олегович, твоему провокаторскому таланту нет равных :))))


 
Igorek ©   (2004-07-20 14:48) [28]


> скажи - где в среде разработки дельфи есть место, где можно
> поставить breakpoint на ИЗМЕНЕНИЕ значения переменной?

В окне Watch второй пункт снизу контекстного меню. Во время выполнения.


 
Sandman25 ©   (2004-07-20 14:57) [29]

[28] Igorek ©   (20.07.04 14:48)

В Delphi IDE нет записи/проигрывания макросов. А без них в данном случае практически невозможно - ведь придется вручную устанавливать breakpoint на каждой строке и указывать условие остановки, причем даже Ctrl+С и Сtrl+V не работает в окне breakpoints.


 
Суслик ©   (2004-07-20 14:59) [30]


> Igorek ©   (20.07.04 14:48) [28]

ясен пень, что на мой вопрос (выделен вам) это отвечает :)))

как это отвечает на п1 исходного вопроса?


 
Суслик ©   (2004-07-20 15:02) [31]


> В Delphi IDE нет записи/проигрывания макросов

есть - ctrl+shift+r, ctrl+shift+p

только для этого врядли будет работать.


 
Igorek ©   (2004-07-20 15:09) [32]

Data Breakpoint


 
Sandman25 ©   (2004-07-20 15:14) [33]

[31] Суслик ©   (20.07.04 15:02)

Упс, у меня это даже где-то записано... Поискал по меню, не нашел, сделал неверный вывод :(


 
Sandman25 ©   (2004-07-20 15:19) [34]

Да, действительно, Data Breakpoint работает отлично.


 
Piter ©   (2004-07-20 15:19) [35]

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

Igorek ©   (20.07.04 14:48) [28]
окне Watch второй пункт снизу контекстного меню. Во время выполнения


это не совсем то. Там можно контролировать когда переменная изменится, а мне нужно останавливаться, когда она изменится и примет определенное значение!

Conditional breakpoints тоже удобная штука, но там можно задавать условия остановки только при "прохождении" брекпоинта. Нельзя задать глобально :(
То есть, фактически должны отслеживаться все обращения по адресу переменной и потом проверяться - а не изменилось ли там значение на определенное (в общем, как Inspect - только с остановкой по условию).

На второй и третий вопрос ни у кого идей нету?

ИдиотЪ   (20.07.04 9:42) [2]
это для тебя существуют модули, а программе пофигу


что значит по фигу. Программа то под отладчиком выполняется. Ты ведь когда нажимаешь F7 - выполнение программы же прыгает по модулям? Почему бы это не отлавливать. То, что это реализуемо - 100%. Можно даже как-то извратиться и написать для конкретного IDE программу, которая будет виртуально жать на клавишу F7 и смотреть - не поменялась ли вкладка юнита в Code Explorer...

И насчет перехвата вызова определенной WinApi функции вроде вообще никто не выразился...


 
Суслик ©   (2004-07-20 15:23) [36]


>
> это не совсем то. Там можно контролировать когда переменная
> изменится, а мне нужно останавливаться, когда она изменится
> и примет определенное значение!

а похоже, что игорек прав.
там и это можно делать :)))

Приколько - сколько лет пишу - data breakpoints еще не использовал. Наверное нужды нет :)))

Игорек и ДО - спасибо.
Пойду архангельского писать.


 
Суслик ©   (2004-07-20 15:23) [37]


> Пойду архангельского писать.

читать, конечно.


 
Dmitriy O. ©   (2004-07-20 15:24) [38]

П 2 Выполнить->Добавить точу останова->На модуль Не подойдет ?
(сорри за РусМеню у меня делфи Русифицированна)


 
Piter ©   (2004-07-20 15:31) [39]

О, Data Breakpoint есть. Значит, есть ответ на первый вопрос...


 
Piter ©   (2004-07-20 15:47) [40]

Dmitriy O. ©   (20.07.04 15:24) [38]
П 2 Выполнить->Добавить точу останова->На модуль Не подойдет ?


Нет, там же брекпоинты на загрузку внешних DLL можно только поставить. Кстати, поставил на NTDLL - программа стала ловить AV при запуске...



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

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

Наверх




Память: 0.57 MB
Время: 0.043 c
1-1090974268
Господин со спичками
2004-07-28 04:24
2004.08.08
СРОЧНО - Как "занять" место на экране подобно Панели Задач?


6-1086536179
ilias
2004-06-06 19:36
2004.08.08
Пароль и логин при dial-up дозвоне


3-1089614080
Смертник
2004-07-12 10:34
2004.08.08
Проблема с поиском в БД.


1-1090474894
seregin2
2004-07-22 09:41
2004.08.08
Отправка письма с помощью SendMail


1-1090489850
Никола
2004-07-22 13:50
2004.08.08
Как спратать главную форму приложения?