相关疑难解决方法(0)

在Delphi Win32应用程序中显示调用堆栈

我想在Delphi 2007(Win32)的错误对话框中显示堆栈跟踪.

理想情况下,我喜欢这样的事情:

try
  //do something
except on e : exception do
  begin
    //rollback a transaction or whatever i need to do here       
    MessageDlg('An error has occurred!' + #13#10 +
                e.Message + #13#10 +
               'Here is the stack trace:' + #13#10 +
               e.StackTrace,mtError,[mbOK],0);
  end;  //except
end;  /try-except
Run Code Online (Sandbox Code Playgroud)

并且输出与IDE中的调用堆栈类似:

MYPROGRAM.SomeFunction
MYPROGRAM.SomeProcedure
MYPROGRAM.MYPROGRAM
:7c817067 kernel32.RegisterWaitForInputIdle + 0x49
Run Code Online (Sandbox Code Playgroud)

delphi error-handling

16
推荐指数
3
解决办法
1万
查看次数

madExcept,获得当前堆栈的顶部

在delphi 2007应用程序中,我们使用madExcept来处理我们的exeptions.我们使用标准对话框,让用户根据需要向我们发送包含邮件的报告.

我们想为此功能添加一些内容.如果用户选择不发送完整报告,我们仍希望将异常记录到文件中,而不是完整报告.我们想要异常类和消息,以及源文件和行号.

前两个很容易,但我找不到找到后者的直接方法.

我有一个IMEException接口形式的完整异常报告.据我所知,调用堆栈只能通过BugReportSections属性获得,它以纯文本形式提供堆栈.

在madStackTrace.pas中,有一个StackTrace( )函数可以给我我想要的东西.它需要很多参数,文档信息有点短.

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

delphi stack-trace madexcept

5
推荐指数
1
解决办法
1368
查看次数

标签 统计

delphi ×2

error-handling ×1

madexcept ×1

stack-trace ×1