Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
9-1082980380
wild_arg
2004-04-26 15:53
2004.08.08
Геометрия трещины и другое


1-1090507285
bloodman
2004-07-22 18:41
2004.08.08
прередача строк из Dll в программу.


1-1090914213
gonta
2004-07-27 11:43
2004.08.08
Запуск приложения из службы


1-1090761670
KaLLeKa
2004-07-25 17:21
2004.08.08
Как сохранить объект TFont в реестре


1-1090397987
Igor_thief
2004-07-21 12:19
2004.08.08
Как получить высоту выпавшего PopupMenu?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский