madExcept, получение вершины текущего стека - PullRequest
5 голосов
/ 07 января 2011

В приложении delphi 2007 мы использовали madExcept для обработки исключений для нас.Мы используем стандартный диалог, позволяющий пользователю отправлять нам отчет с почтой, если он этого хочет.

Мы хотим немного добавить к этой функциональности.Если пользователь решит не отправлять полный отчет, мы все равно хотим записать исключение в файл, но не полный отчет.Нам нужен класс исключения и сообщение, а также исходный файл и номер строки.

Первые два легко, но я не могу найти прямой способ найти последнее.

Iиметь полный отчет об исключениях в виде интерфейса IMEException.Насколько я вижу, стек вызовов доступен только через свойство BugReportSections, которое дает мне стек в виде простого текста.

В madStackTrace.pas есть функция StackTrace( ), которая должнадай мне то, что я хочу.Требуется много параметров, а в документации мало информации ..

Вопрос: Кто-нибудь знает правильные параметры для ввода в StackTrace( ), чтобы он только возвращалверхний элемент стека из потока, в который было сгенерировано исключение?

1 Ответ

5 голосов
/ 07 января 2011

madStackTrace.pas имеет другую функцию, StackAddrToStr, которая просто берет один адрес и возвращает форматированный текст для него. Если вы находитесь в блоке except для аварийного потока, вы можете передать ему глобальную переменную ExceptAddr. Если вы находитесь в одном из обратных вызовов madExcept, используйте взамен IMEException.ExceptAddr.

...