c# - 在 C# 中处理应用程序挂起/死锁

标签 c# multithreading debugging logging deadlock

问题:是否有任何方法可以记录或确定提供给客户端的应用程序中发生死锁的位置(可能通过在构建过程中启用某些标志)?

背景:通常当我测试代码并发生死锁时,我在 Visual Studio 中运行,所以我可以点击 debug all 并找到哪个线程正在等待以及在哪里,我立即知道问题是什么。但是,有一个问题导致我的应用程序很少卡住(在单元测试或集成测试中未检测到)。这发生在他只运行可执行二进制文件的客户端机器上。我很想知道是否有任何我可以启用的功能可以帮助报告这些问题,因为很难说如果没有调试器就可能是问题所在。

最佳答案

您可以让客户端从 TaskManager 或 Process Explorer 创建一个小型转储。参见 this article获取更多信息。

关于c# - 在 C# 中处理应用程序挂起/死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260121/

相关文章:

c++ - 带定时器和信号的多线程程序

javascript - 无法在 .js 文件中命中断点

debugging - 如何在 GDB 中获取内存地址的符号名称?

c# - 防止 Azure 在处理时停止工作线程

c# - 对象如何检测它何时被处理?

java - 使用 java 分析线程转储

Python unpickling 堆栈下溢

c# - 带有更新 2 的 Visual Studio 2015 - 'The Scc Display Information package did not load correctly'

c# - .NET DateTime 访问主机时间还是虚拟机时间?

c# - 为存储过程调用实现线程池