我正在使用Madexcept工具来记录异常,但我无法定期记录调用堆栈。任何人都可以建议我如何记录调用堆栈。
答案 0 :(得分:4)
要获得没有整个报告的跟踪(减慢速度),您只需调用MadStackTrace即可。当你想知道你的程序如何进入各种程序/功能/方法时,这是非常方便的,特别是当它有多种方式可能发生时,或者你正在解决性能问题。
你需要在你的用途中使用它:
uses
MadStackTrace;
// Then to use the thing:
procedure foo;
begin
writeln('How I got to FOO:' + MadStackTrace.StackTrace);
end;
答案 1 :(得分:1)
您的问题的天真答案是您可以在专用线程中执行以下操作:
var
exc: IMEException;
....
exc := madExcept.NewException;
Logger.Log(exc.BugReport);
请注意,这会记录整个错误报告。如果您想记录较少的信息,可以使用常规的madExcept技术从IMEException
引用中提取该信息。
还要注意,收集所有这些信息需要花费大量时间,并且会干扰程序的执行。在我看来,你真正想要的是一个分析器,或者一些跟踪记录。我不认为madExcept实际上是你的潜在问题的解决方案。