如何解决如何监控线程堆栈深度?
我遇到了一些与 EntityFramework 相关的 StackOverflowException
问题,我希望能够测量应用程序线程中的堆栈大小,以便更好地判断我尝试解决问题的效率。
我想知道是否有一种标准方法可以在应用程序运行时测量应用程序中每个线程(或特定线程)的最大堆栈大小,然后在执行完成后分析此数据。
由于我不拥有当前生成深层堆栈的代码,因此我无法使用任何自定义类轻松检测此类代码。
有没有办法使用性能计数器等分析机制来监控堆栈大小?这将是理想的,因为它允许我们监控值(可能是实时的)并轻松地为这些数据生成图表,甚至在值超过某个阈值时创建警告。
我知道我可以在崩溃后使用 WinDbg 检查堆栈大小(仍然不太容易看到),并且我可以使用任何自定义线程大小创建自己的线程或使用 EDITBIN 工具更改默认线程大小.然而,这些方法是“基于试错法”的,并且会使我的测试变得非常复杂,因为我必须依靠强制 StackOverflowException
在各种配置中发生。
这类似于 How can I measure thread stack depth?,虽然它是针对 Java 的,而这是针对 .Net 的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。