Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Внизперехват вызовов процедур Найти похожие ветки
← →
Мыш (2004-02-06 07:13) [0]Можно ли перехватывать все вызовы процедур в пределах программы, получая при этом имя как вызвавшей, так и вызываемой? Цель - создание текстового лога, чтобы отловить неуловимую ошибку.
← →
KSergey (2004-02-06 07:32) [1]Имена в общем случае - нет. На этапе компиляции их уже нет.
Однако изучая отладочную информацию (информацию для отладчика) - можно, там это есть. Но и проект должен быть скомпилен с ней (и учитывать, что длдя дельфей она хранится не в exe, если не ошибаюсь).
Как - не знаю ;)
Н оточн овидел в новостях компонент на этом сайте упоминание библиотеки, которая при exception"ах раскручивала стек вызовов и это находила.
Если не ошибаюсь, что-то такое же есть в Jedi.
PS
А не проще ли в начало каждой процедуры просто тупо вставить OutLog("ProcName")? Может и "не красиво", рутинно, но есть ли время для этих изысков?
Хотя если есть что-то готовое - то, пожалуй, было бы интересно взять на вооружение, тем более, что отладчик ведь об этом знает, включая имена переменных...
← →
Alexander666 (2004-02-06 08:11) [2]А как насчет HookMainWindow. По крайней мере перехват ведет :-)
← →
имя (2004-02-06 08:42) [3]Удалено модератором
← →
Dimka Maslov (2004-02-06 08:53) [4]"Взрослая" отладка производится при помощи трассировки и контрольных точек, расставляемых в подозрительных местах
← →
Radionov Alexey (2004-02-06 08:55) [5]>мыщ (06.02.04 08:42) [3]
Как-то без этого обходился. Простым дебаггером. Обычно расставляю breakpointы, пока до глюка не доберусь. Так сказать, методом последовательных приближений.
А последовательность вызовов в текущий момент call stack можно посмотреть - это знаешь, конечно.
А в чем ошибка и ее "неуловимость" состоит?
← →
KSergey (2004-02-06 11:45) [6]> [2] Alexander666 © (06.02.04 08:11)
> А как насчет HookMainWindow. По крайней мере перехват ведет
> :-)
Перхват чего? Дельфийских процедур?
← →
Мыш (2004-02-06 18:39) [7]>А в чем ошибка и ее "неуловимость" состоит?
Ошибки конкретной сейчас нет, но иногда бывает так: выскочит нарушение доступа, а где - непонятно. После нажатия F7 курсор оказывается где-нибудь в конце модуля, например. Дается адрес, конечно, но для этого нужно хорошо в ассемблере разбираться.
Кроме того, "взрослая отладка" хорошо, когда ты и прога один на один. А если удаленно кто-то тестирует? И ошибка такого рода, которая не определяется всем мыслимым перебором возможных вариантов, а всплывает только у другого человека на другом компьютере? Тогда спасение - только лог-файл, ведущий хронометрическую запись всех событий, возможно значений ключевых
переменных.
>"Взрослая" отладка производится при помощи трассировки и контрольных точек, расставляемых в подозрительных местах
Никто и не спорит с этим способом. Но согласись, имея лог подозрительное место найдешь в десятки раз быстрее.
← →
Cobalt (2004-02-06 20:27) [8]Пожалуй, в такой ситуации - только очень подробный лог - имя процедуры, некоторые контрольные значения, Адреса объектов, создаваемых/изменяемых динамически, возможно, их свойства (можно там даже AV поймать).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c