代码之家  ›  专栏  ›  技术社区  ›  Alex

windbg/sos:解释!同步输出

  •  9
  • Alex  · 技术社区  · 15 年前

    我正在寻找一个描述的输出所产生的!SOS的SYNCBLK命令。

    尤其是我在“monitorhold”一列中没有找到有用的解释。此列显示一系列崩溃转储中的高值。

    例子:

    0:000> !SyncBlk
    Index         SyncBlock MonitorHeld Recursion Owning Thread Info          SyncBlock Owner
       44 0000000005a5c228            1         1 000000000e7a6740  2304 273   000000019f858cd0 System.Object
       48 000000000579bae8            1         1 000000000e7a72e0  2370 275   000000015f999900 System.Object
       52 000000000579b9c8            1         1 0000000011bbd3b0  1e98 295   00000000ff89fe08 System.Object
       54 000000000579b938            1         1 000000000e7a38c0  1be4 249   000000013f8aa888 System.Object
      108 0000000005a5bfe8            1         1 000000000e79f300  224c 242   00000000ff8a5828 System.Object
      110 0000000005a5c078            1         1 000000000e79ca50  2290 262   000000015f9a8020 System.Object
      112 0000000005a5c108            1         1 0000000011bb70e0  1d38 236   000000015f99e408 System.Object
      114 000000000579b620            1         1 0000000011bb93c0  1884 304   00000001bf974a90 System.Object
      124 0000000005a44d48            1         1 000000000e7a6170  2300 272   000000019f853fe8 System.Object
      146 0000000005a44688           99         1 000000000588cbf0  13e0  38   000000017f71c4f8 System.Object
      155 0000000005a44f88            1         1 0000000011bba530  2274 301   000000019f82f120 System.Object
      157 0000000005a45018            1         1 0000000011bbf0c0  2034 290   000000015f952980 System.Object
    

    有人能解释一下“监控”栏中的“99”吗?

    是否有人链接到此命令的完整参考文档?

    谢谢, 亚历克斯

    2 回复  |  直到 15 年前
        1
  •  18
  •   Reed Copsey    15 年前

    monitorHolded是指特定的syncblk所持有的监视器数量。

    每次对锁进行争用时,都会有一个拥有者持有SyncBlk。锁上的每一个服务员可容纳2人。

    您的99表示您有一个对象“拥有”该锁,49个对象等待该锁。

    最佳讨论和详细解释 !syncblk 我发现是 this one by Tess Ferrandez .

        2
  •  3
  •   Otávio Décio    15 年前

    除了Reed提到的,您还可以使用sosex.dll扩展名!用于检查死锁的dlk命令。