锁 - 所有的线程都“锁定计数” = 0

问题描述:

我打开使用WinDbg故障转储,当我使用!locks命令,我得到3线输出,每一个具有“锁定计数” = 0锁 - 所有的线程都“锁定计数” = 0

这意味着那些线程不锁定任何对象(从我的理解)。 如何从这一点开始调查我正在处理的问题的根本原因? (性能系统故障)

我正在调试的代码包含托管代码和非托管代码。

+0

Google“代码剖析” – mustaccio

+0

您试图调试什么问题?挂?锁不是应用程序挂起的唯一原因。 – kvr

线程上的锁定计数为0表示没有人正在线程上同步。这并不意味着线程没有锁定任何对象。如果您锁定了一个对象,那么该信息将存储在该对象上(例如,关键部分,互斥锁或信号量)。

一方面你正在寻找锁,这让我认为发生了死锁。另一方面,你提到性能。区分这两个应该很容易。发生死锁后,您将无法再获得结果,有时CPU使用率甚至会降至0%。由于性能问题,你仍然会得到结果,但是你需要等待更长的时间。

故障转储文件可以帮助解决死锁问题,但它很少有助于解决性能问题,尤其是如果您只有一个故障转储文件。

您应该使用性能分析器来分析性能问题。