我目前正在尝试在我们的软件中实现错误/错误报告功能,该功能会将电子邮件发送到我们的支持地址。
我认为在通知用户有关如何到达错误的通知时获取堆栈信息会很有帮助,类似于IDE中的Call-Stack-Trace。
我能找到的所有获取堆栈转储的示例都是使用MadExcept或EurekaLog之类的工具从Exception内部进行的。
通常,尽管我们尝试避免try..except块,但我们会检查函数内的值,并在出现问题时使用自定义MessageDlg(..)函数显示错误。
我想知道是否有可能在异常之外获取调用堆栈信息,以及如何做到这一点。
例如,如果用户单击按钮
{"event":{"deviceID":"rule_1","roomNo":"123","temp":12}}
我想获得以下信息:
procedure ButtonClick()
begin
DoSomething(4);
end;
function DoSomething(SomeVal:Integer):Boolean;
begin
if someVal>2
then result:=DoSomethingDifferent(someVal)
else result:=ContinueWithXXX;
end;
function DoSomethingDifferent(errorVal:integer):Boolean;
begin
if ErrorVal>3 then MessageDlg(......)
end;
并将其附加到电子邮件中。
编辑: 截至目前,我还没有使用3rd Party工具或软件来获得电话协议栈,因为这需要说服高层人士首先购买许可证。 我想知道如果没有这样的工具,是否可以实现调用堆栈的转储。