2016-03-15 37 views
6

我正在試圖在.NET application的轉儲中找到默認TaskScheduler的內容。我該怎麼做?如何在.NET應用程序的轉儲中查找默認TaskScheduler的內容?

應用程序被掛起。

application was hung

我需要確保的是默認的調度包含具有一定delegate一個​​。

+2

@LievenKeersmaekers:我覺得他說的是[的TaskScheduler(https://msdn.microsoft.com/en-US/library/system.threading.tasks.taskscheduler%28v=vs.110%29 .aspx)class –

+0

是的,我正在談論TaskScheduler類。特別是關於[TaskScheduler.Default屬性](https://msdn.microsoft.com/en-us/library/system.threading.tasks.taskscheduler.default(v = vs.110).aspx) –

+0

它是一個常規'.dmp'?嘗試在Visual Studio中打開它。給出足夠的符號,調試器應該能夠顯示任務的概述(Debug - > Windows - > Tasks)。如果是部分轉儲或者沒有符號,這將無法工作,但值得一試。 –

回答

1

首先,找到的的TaskScheduler

0:025> .loadby sos clr 
0:025> .symfix c:\debug\symbols 
0:025> !name2ee mscorlib.dll System.Threading.Tasks.TaskScheduler 
Module:  000007feeea11000 
Assembly: mscorlib.dll 
Token:  000000000200052e 
MethodTable: 000007feef0a8ab0 
EEClass:  000007feeebde1a8 
Name:  System.Threading.Tasks.TaskScheduler 

方法表然後,轉儲堆發現該類型的某些對象。請注意,我在這裏使用String,因爲我沒有可用的TaskScheduler的應用程序。

0:025> !dumpheap -mt <MethodTable> 

既然你有一些對象,只需轉儲其中的一個。

0:025> !do 00000000126ed548 
Name:  System.String 
MethodTable: 000007feef0bda88 
EEClass:  000007feeea16a08 
Size:  34(0x22) bytes 
File:  C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll 
String:  100% 
Fields: 
       MT Field Offset     Type VT  Attr   Value Name 
000007feef0c03d0 4000243  8   System.Int32 1 instance    4 m_stringLength 
000007feef0bec38 4000244  c   System.Char 1 instance    31 m_firstChar 
000007feef0bda88 4000248  80  System.String 0 shared   static Empty 

通知的shared(靜態)特性Empty的字符串。您應該在TaskScheduler中爲靜態屬性Default獲得類似的內容。

正如你所看到的,你什麼都看不到。這就是爲什麼你需要SOSEX擴展名和做一個!mdt System.Threading.Tasks.TaskScheduler

0:025> !mdt System.String 
System.String 
[...] 
    [s]Empty: string 
     AppDomain 'Test.exe' (0000000001d73470): 0000000011fc1420[System.String] STRVAL= 
+1

這個答案不太可能產生與問題相關的任何結果。在大多數實現中,沒有在類的任何實例屬性中找到由TaskScheduler.Default調度的任務(特別是不是「ThreadPoolTask​​Scheduler」)。實際的答案涉及更多。 –

+0

@JeroenMostert:正如評論中提到的那樣,這就是他想要的。如果它不能解決問題,那是一個不同的故事。如果你知道更好的答案,我很樂意聽到它。隨時downvote。 –

相關問題