2012-06-08 30 views
5

Thứ nhất, có lệnh nào để nhận trợ giúp và tham số cho mỗi lệnh sos trong windbg không?Hãy giải thích! SyncBlk lệnh windbg

Thứ hai, tôi muốn hiểu !syncblk đầu ra

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 

MonitorHeld lãm # của màn hình được tổ chức bởi các synblk. 1 để viết và 2 để đọc, nhưng phần còn lại của cột nghĩa là gì?

Nói rằng tôi có một mã C#

MyClass MyObj; 
MyObj = new MyClass(); 

Bây giờ nếu tôi làm

lock (MyObj) 
{ 
} 

Will cột chương syncblk chủ sở hữu "MyClass"? Tương tự như vậy khi tôi chạy lệnh !SyncBlk này, chính xác nó cho tôi thấy điều gì? Có phải nó cho tôi biết số lượng lock()Monitor.EnterMutex() và các cơ chế khóa khác không?

Trả lời

7

Để được trợ giúp về các lệnh SOS, hãy nhập !help hoặc !sos.help. Để được trợ giúp về các lệnh cụ thể, hãy nhập !help <command>. Các văn bản trợ giúp cho SOS cũng là available online. Phiên bản trực tuyến cung cấp cho bạn tổng quan về lệnh. Để biết thêm chi tiết, hãy sử dụng !help syncblk.

Đầu ra của !syncblk cho bạn thấy id luồng (tiêu đề # 1 ở đầu ra bên dưới), đối tượng và loại đối tượng được sử dụng để khóa (tiêu đề # 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 

1) Giá trị đầu tiên là đối tượng chuỗi, thứ hai là id chủ đề gốc và cuối cùng là id chuỗi WinDbg.

2) Giá trị đầu tiên là đối tượng được sử dụng để khóa và giá trị thứ hai là loại đối tượng này.

!syncblk chỉ bao gồm các khóa .NET bên trong, vì vậy Mutex (là đối tượng hạt nhân) không được đề cập ở đây.

Trong ví dụ của bạn, id chủ đề của mã chạy báo cáo khóa sẽ hiển thị cùng với địa chỉ MyObj điểm đến và loại MyClass.

+0

Bạn có thể vui lòng cho biết cột nào hiển thị giá trị nào không? có 2 cột syncblock. – bsobaid

+0

Tôi đã cập nhật câu trả lời của mình để làm rõ. Xin vui lòng cho tôi biết nếu nó vẫn không rõ ràng. –

+0

Cảm ơn và cột 1,2 và 4 nghĩa là gì? WinDbgId được sử dụng để khoan xuống một sợi? một cái gì đó như ~ 45e! clrstack? Có cách nào để biết dòng mã nơi một dòng syncblock nhất định đang nắm giữ/chờ đợi cho một chủ đề? – bsobaid