Форум: "Потрепаться";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизОтладка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.035 c