我正在工作中调试一个大型应用程序中的一个明显的并发问题。该错误仅在运行许多(12+)小时后在某些性能较低的计算机上出现,并且我从未在调试器中重现它。正因为如此,我的调试工具基本上仅限于分析日志文件。
C# 可以轻松获取抛出异常的线程的堆栈跟踪,但我还想获取抛出异常时当前在我的 AppDomain 中执行的所有其他线程的堆栈跟踪。
这可能吗?
CodePlex 上有一个工具叫做托管堆栈浏览器 http://mse.codeplex.com/(我相信起源于微软)。它使用调试和分析 API 来捕获正在运行的 .Net 应用程序中线程的堆栈跟踪,而无需修改应用程序。
您可以运行应用程序直到遇到问题,然后使用此工具对其进行分析以捕获所有正在运行的线程的当前堆栈跟踪。这种方法的好处是您无需修改应用程序(对其进行检测可能会改变其行为),并且该工具是免费的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)