2012-07-10 31 views
10

Tôi đang khám phá một minidump của quá trình ASP.NET với WinDbg, sử dụng SOS. Nếu tôi liệt kê các chủ đề quản lý tôi thấy một tìm kiếm danh sách bình thường của chủ đề:Không thể chuyển sang chuỗi được quản lý trong WinDbg

0:000> !threads 
ThreadCount: 8 
UnstartedThread: 0 
BackgroundThread: 8 
PendingThread: 0 
DeadThread: 0 
Hosted Runtime: no 
               PreEmptive            Lock 
     ID OSID  ThreadOBJ  State GC  GC Alloc Context     Domain   Count APT Exception 
XXXX 1 12bc 00000000001441f0 1808220 Disabled 0000000140b10fc8:0000000140b12f20 000000000017f6e0  0 Ukn (Threadpool Worker) 
XXXX 2 1334 0000000000152f90  b220 Enabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn (Finalizer) 
XXXX 3 138c 000000000017b100 80a220 Enabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn (Threadpool Completion Port) 
XXXX 4 81c 000000000017eb40  1220 Enabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn 
XXXX 5 5e4 00000000001bccd0 880a220 Enabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn (Threadpool Completion Port) 
XXXX 6 11e4 0000000004bee280 180b220 Disabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn (Threadpool Worker) 
XXXX 7 73c 0000000004c267e0 180b220 Disabled 0000000140b0f158:0000000140b10f20 000000000017f6e0  3 Ukn (Threadpool Worker) System.StackOverflowException (000000007fff0138) (nested exceptions) 
XXXX 8 21c 00000000001ad1c0 180b220 Enabled 0000000000000000:0000000000000000 0000000000121b90  0 Ukn (Threadpool Worker) 

Tuy nhiên, nếu tôi cố gắng chuyển sang sợi 7 (một với các ngoại lệ), tôi có được điều này:

0:000> ~7s 
     ^Illegal thread error in '~7s' 

Điều này xảy ra khi cố gắng chuyển sang bất kỳ chuỗi được quản lý nào. Tôi không chắc phải tiến hành từ đâu. Những gì tôi thực sự cần làm là xem dấu vết ngăn xếp từ chuỗi được quản lý đó.

Trả lời

9

Đầu ra từ !threads hiển thị ba ID khác nhau cho chuỗi (ID của WinDbg, ID được quản lý và ID gốc). Một trong những bạn cần sử dụng là tận cùng bên trái. Như bạn có thể thấy tất cả các chủ đề trong bãi chứa đã được đánh dấu là XXXX có nghĩa là chúng không còn tồn tại nữa. Điều này là bình thường, nhưng tôi thấy nó kỳ quặc rằng tất cả các chủ đề được đánh dấu như thế. Là bãi chứa trong quá trình tắt máy?

CẬP NHẬT dựa trên nhận xét

Bạn chắc chắn sẽ có thể để có được một bãi chứa hữu ích với adplus -crash, nhưng rõ ràng tất cả mọi thứ là một chút sai lầm ở đây vì ngay cả thread finalizer đã được chấm dứt. Tôi nhận thấy rằng một trong những chủ đề có một StackoverflowException, mà có lẽ là những gì bạn đang sau. Để có được điều đó, bạn có thể tạo các bãi chứa trên các ngoại lệ cơ hội đầu tiên và xem liệu bạn có nhận được thứ gì đó hữu ích hơn theo cách đó hay không. Adplus có một lá cờ FullOnFirst cho điều đó.

bổ sung CẬP NHẬT

Được rồi, rằng lạ. Một vài thứ khác để thử.

  • Đính kèm quy trình trước khi xảy ra sự cố và chỉ để nó g. Điều đó sẽ đột nhập vào trình gỡ lỗi về ngoại lệ. Nếu bạn muốn, bạn có thể thiết lập một sự kiện để chỉ in bất kỳ ngoại lệ nào vào bảng điều khiển. Sử dụng sxe -c "!pe; !clrstack; gn" clr.

  • Adplus từng là tập lệnh vbs nhưng được viết lại dưới dạng tệp thực thi trong khi quay lại. Tôi đã nhìn thấy một vài vấn đề nhỏ với phiên bản mới, nhưng không có gì như thế này. Bạn có thể thử tập lệnh cũ vẫn có sẵn dưới dạng adplus_old.vbs.

  • Hãy thử procdump từ sysinternals. Nó hỗ trợ cùng một loại tùy chọn kết xuất như Adplus (cộng thêm một vài tùy chọn khác).

+0

Có, kết xuất được thực hiện trong khi xảy ra sự cố (bằng cách chạy 'ADPlus -crash'). Điều này có nghĩa là tôi không thể nhìn vào những chủ đề đó? – andypaxo

+0

Cảm ơn bạn đã giải thích rõ ràng! Tôi đã thử lại lần nữa, sử dụng '-fullonfirst', và một bãi chứa đầy đủ đã được tạo ra. Thật không may kết quả là như nhau, với tất cả các chủ đề không có sẵn. Tôi cũng đã cố gắng nhận được ngoại lệ trực tiếp từ heap, nhưng thông điệp, stack trace, vv đều là null. Bạn có bất kỳ ý tưởng tại sao rất ít thông tin có sẵn? – andypaxo

+0

@Brian, không nên 'gn' được sử dụng trong lệnh sxe của bạn? –

Các vấn đề liên quan