我正在試圖在.NET application
的轉儲中找到默認TaskScheduler
的內容。我該怎麼做?如何在.NET應用程序的轉儲中查找默認TaskScheduler的內容?
應用程序被掛起。
我需要確保的是默認的調度包含具有一定delegate
一個。
我正在試圖在.NET application
的轉儲中找到默認TaskScheduler
的內容。我該怎麼做?如何在.NET應用程序的轉儲中查找默認TaskScheduler的內容?
應用程序被掛起。
我需要確保的是默認的調度包含具有一定delegate
一個。
首先,找到的的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=
這個答案不太可能產生與問題相關的任何結果。在大多數實現中,沒有在類的任何實例屬性中找到由TaskScheduler.Default調度的任務(特別是不是「ThreadPoolTaskScheduler」)。實際的答案涉及更多。 –
@JeroenMostert:正如評論中提到的那樣,這就是他想要的。如果它不能解決問題,那是一個不同的故事。如果你知道更好的答案,我很樂意聽到它。隨時downvote。 –
@LievenKeersmaekers:我覺得他說的是[的TaskScheduler(https://msdn.microsoft.com/en-US/library/system.threading.tasks.taskscheduler%28v=vs.110%29 .aspx)class –
是的,我正在談論TaskScheduler類。特別是關於[TaskScheduler.Default屬性](https://msdn.microsoft.com/en-us/library/system.threading.tasks.taskscheduler.default(v = vs.110).aspx) –
它是一個常規'.dmp'?嘗試在Visual Studio中打開它。給出足夠的符號,調試器應該能夠顯示任務的概述(Debug - > Windows - > Tasks)。如果是部分轉儲或者沒有符號,這將無法工作,但值得一試。 –