Поймать exception, распечатать стек.
От: AliBaba  
Дата: 29.01.02 15:04
Оценка:
Привет, может кто думал нат тем, можно ли, поймав exception, распечатать стек и указать место в сорсе, где exception случился?
Re: Поймать exception, распечатать стек.
От: tavwizard Беларусь  
Дата: 29.01.02 15:12
Оценка:
Здравствуйте AliBaba, Вы писали:

AB>Привет, может кто думал нат тем, можно ли, поймав exception, распечатать стек и указать место в сорсе, где exception случился?


В MSDN есть статья по этому поводу.
Re: Поймать exception, распечатать стек.
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 29.01.02 15:54
Оценка:
Здравствуйте AliBaba, Вы писали:

AB>Привет, может кто думал нат тем, можно ли, поймав exception, распечатать стек и указать место в сорсе, где exception случился?


Читай "Отладка приложений" by John Robbins, и/или колонку Bygslayer в Microsoft Systems Journal. Там и там развивается по ходу пьесы BugslayerUtil.dll, в которой это дело реализовано на все случаи жизни. В частности, функции GetFaultReason, GetFirst/NextStackString дают исчерпывающую информацию о причине сбоя и адресах, а также печатают стек. Есть возможность запоминания первых 4-х параметров всех функций (адресов). Также, поработав с кодом (если хочется изобретать велосипед, или разобраться поконкретнее), можно узнать, как все это делается своими руками.

Идея следующая:
Перекрывается обработчик необработанных исключений с помощью SetCrashHandlerFilter(), и новая функция-обработчик вызывает функции из этой dll, а дальше — хочешь, в лог, еще куда. У меня реализовано. Оч помогает.

Эту же функцию можно и в тех местах, где обработка есть, как exception filter, чтоб все то же самое выводить автоматом, когда исключение отловлено.

С уважением
Алексей Кирдин
Re[2]: Поймать exception, распечатать стек.
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 29.01.02 15:59
Оценка:
Здравствуйте Kaa, Вы писали:

Kaa>Здравствуйте AliBaba, Вы писали:


AB>>Привет, может кто думал нат тем, можно ли, поймав exception, распечатать стек и указать место в сорсе, где exception случился?


Kaa>Bygslayer

Bugslayer, конечно.

Если хочешь сам, то начни с функции SymInitialize и дальше по всем темам.



С уважением
Алексей Кирдин
Re: Поймать exception, распечатать стек.
От: VD Россия  
Дата: 30.01.02 11:42
Оценка:
Здравствуйте AliBaba, Вы писали:

AB>Привет, может кто думал нат тем, можно ли, поймав exception, распечатать стек и указать место в сорсе, где exception случился?


Kaa уже написал про книгу Роббинса, вот один из двух известных мне вариантов ее издания на русском языке Отладка приложений (+ CD-ROM). Второй вариант называется типа "Отладка Windows приложений", но автор и исходная книга таже. Так вот на прилагаемом сидюке есть программа, которая позволяет делать то, что тебе нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.