将调用堆栈记录到文件中

时间:2014-03-04 06:39:23

标签: delphi delphi-6 madexcept

我正在使用Madexcept工具来记录异常,但我无法定期记录调用堆栈。任何人都可以建议我如何记录调用堆栈。

2 个答案:

答案 0 :(得分:4)

要获得没有整个报告的跟踪(减慢速度),您只需调用MadStackTrace即可。当你想知道你的程序如何进入各种程序/功能/方法时,这是非常方便的,特别是当它有多种方式可能发生时,或者你正在解决性能问题。

你需要在你的用途中使用它:

uses
  MadStackTrace;

// Then to use the thing:

procedure foo;
begin
  writeln('How I got to FOO:' + MadStackTrace.StackTrace);
end;

http://help.madshi.net/madStackTraceUnit.htm

答案 1 :(得分:1)

您的问题的天真答案是您可以在专用线程中执行以下操作:

var
  exc: IMEException;
....
exc := madExcept.NewException;
Logger.Log(exc.BugReport);

请注意,这会记录整个错误报告。如果您想记录较少的信息,可以使用常规的madExcept技术从IMEException引用中提取该信息。

还要注意,收集所有这些信息需要花费大量时间,并且会干扰程序的执行。在我看来,你真正想要的是一个分析器,或者一些跟踪记录。我不认为madExcept实际上是你的潜在问题的解决方案。