bso*_*aid 5 c# command windbg sos
首先,是否有一个获取每个sos命令的帮助和参数的命令windbg?
其次,我想了解!syncblk输出
Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner
201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList
2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyClass
2945 05b4b66c 1 1 17d1a290 12c0 752 02482940 MyClass
Run Code Online (Sandbox Code Playgroud)
MonitorHeld显示由持有的监视器#synblk.写入1和读取2,但列的其余部分是什么意思?
说我有一个C#代码
MyClass MyObj;
MyObj = new MyClass();
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做
lock (MyObj)
{
}
Run Code Online (Sandbox Code Playgroud)
请问syncblk所有者列秀"MyClass的"?同样,当我运行此!SyncBlk命令时,它到底显示了什么?它是否显示了lock()and Monitor.Enter和Mutex()以及其他锁定机制的数量?
要获得SOS命令的帮助,请输入!help或!sos.help.获取特定命令类型的帮助!help <command>.SOS的帮助文本也可在线获取.在线版本为您提供了该命令的概述.有关详细信息使用!help syncblk.
输出!syncblk显示线程id(下面输出中的标题#1),对象和用于锁定的对象的类型(标题#2).
+-------#1-------+ +-----#2------+
Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner
201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList
2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyClass
2945 05b4b66c 1 1 17d1a290 12c0 752 02482940 MyClass
Run Code Online (Sandbox Code Playgroud)
1)第一个值是线程对象,第二个是本机线程id,最后一个是WinDbg线程id.
2)第一个值是用于锁定的对象,第二个值是该对象的类型.
!syncblk仅涵盖内部.NET锁,因此Mutex(这是一个内核对象)不在此处.
在您的示例中,运行lock语句的代码的线程ID将与地址MyObj指向和类型一起显示MyClass.
| 归档时间: |
|
| 查看次数: |
2853 次 |
| 最近记录: |