我在运行时发生异常,这是不可重现的,因此我无法在IDE /调试器中调试它.我想知道代码在这里发生了什么,所以我用try/except语句包围了代码,插入一个'raise exception'语句进行测试并显示这样的stacktrace,看它是否有效:
on e: exception do begin
showmessage(e.StackTrace);
end;
Run Code Online (Sandbox Code Playgroud)
但是显示的消息为空.它为什么是空的?还有另一种方法可以知道发生异常的位置吗?使用Delphi XE.
Ken*_*ite 10
该Exception.StackTrace文档表明缺省实现返回一个空字符串,并且,为了使用功能,你需要提供一个GetStackInfoStringProc程序.它还建议使用第三方提供商的一些实现(包括免费和商业),而不是编写自己的实现.
这是该文档的(简要)摘录 - 访问相关链接的文档页面:
默认情况下,StackTrace始终为空字符串.如果希望StackTrace包含实际值,则必须为GetStackInfoStringProc分配一个可以从堆栈信息生成字符串的过程.
使用Exception.StackTrace
为了使用StackTrace属性获取异常的堆栈跟踪,您必须使用(或实现)堆栈跟踪提供程序.有许多第三方解决方案,包括商业和免费解决方案.
一些堆栈跟踪提供程序是:
有关如何使用上述某些第三方堆栈跟踪提供程序的更多信息,请参阅以下博客文章:
- 使用Delphi的新Exception.StackTrace(Tobias Gurock,2009).
- CodeVerge - 如何使用Exception.StackTrace(2008).
| 归档时间: |
|
| 查看次数: |
1455 次 |
| 最近记录: |