Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-53736
raptorus
2004-01-28 16:27
2004.02.17
Приветствую всех, нужна дока по RAVE Reports, подскажите где


9-53350
Norlin
2003-08-07 02:02
2004.02.17
Вопрос ПО ПОСТРОЕНИЮ ИГР!!!


14-53730
Figr
2004-01-28 14:32
2004.02.17
Какое количество оборотов у стандартных 478 кулеров?


1-53459
Goida
2004-02-06 13:54
2004.02.17
Стоит ли освобождать объекты WordApplication и WordDocument?


3-53426
}|{yk
2004-01-26 11:25
2004.02.17
В какой системной таблице находятся названия таблиц?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский