我正在使用 Madexcept 工具记录异常,但我无法定期记录调用堆栈。任何人都可以建议我如何记录调用堆栈。
问问题
1298 次
2 回答
4
要在没有整个报告的情况下仅获取跟踪(这会减慢速度),您可以调用 MadStackTrace。当您想知道您的程序如何进入各种过程/功能/方法时,它非常方便,特别是当它可能以多种方式发生时,或者您正在为性能问题而摸不着头脑。
你在你的使用中需要这个:
uses
MadStackTrace;
// Then to use the thing:
procedure foo;
begin
writeln('How I got to FOO:' + MadStackTrace.StackTrace);
end;
于 2014-03-04T13:51:41.613 回答
1
对您的问题的天真回答是,您可以在专用线程中执行以下操作:
var
exc: IMEException;
....
exc := madExcept.NewException;
Logger.Log(exc.BugReport);
请注意,这会记录整个错误报告。如果您想记录更少的信息,您可以使用正常的 madExcept 技术从IMEException
参考中提取该信息。
另请注意,收集所有这些信息需要花费大量时间,并且会干扰程序的执行。在我看来,您真正想要的是探查器或一些跟踪记录。我不认为 madExcept 实际上是解决您潜在问题的方法。
于 2014-03-04T08:10:09.753 回答