2011-01-07 94 views
5

在delphi 2007应用程序中,我们使用madExcept来处理对我们的扩展。我们使用标准对话框,让用户发送邮件报告,如果他想。madExcept,获得当前堆栈顶部

我们希望为此功能添加一点。如果用户选择不发送完整报告,我们仍然希望将该例外记录到文件中,但不是完整的报告。我们需要异常类和消息,以及源文件和行号。

前两个很容易,但我找不到找到后者的简单方法。

我有一个IMEException界面的完整例外报告。据我所知,调用堆栈只能通过BugReportSections属性获得,它以纯文本形式提供给我。

在madStackTrace.pas中,有一个StackTrace()-功能应该给我我想要的。这需要大量的参数,该文档是信息有点短..

问: 是否有人知道正确的参数送入StackTrace(),所以它只能从返回堆栈的顶部项抛出异常的线程?

回答

5

madStackTrace.pas有另一个功能,StackAddrToStr只需要一个地址,并返回格式化文本。如果您在崩溃线程的except块中,则可以将全局变量ExceptAddr传递给它。如果你在其中一个madExcept回调函数中使用`IMEException.ExceptAddr'。

+0

仍然返回一个字符串,但是这个引导我从madMapFile.pas中获取GetMapFileInfos(),这可能会给我我想要的。 – Vegar

+0

我想我可能已经找到了我需要的StackTrace,但是:'StackTrace(true,false,false,@stack,exception.ExceptAddr,true,false);' – Vegar

+0

@Vegar如果它正在工作,应该接受此答案 – mjn