gpt4 book ai didi

.net - 如何在 .NET 应用程序的转储中查找默认 TaskScheduler 的内容?

转载 作者:行者123 更新时间:2023-12-04 15:55:24 25 4
gpt4 key购买 nike

我正在尝试查找默认内容 TaskScheduler.NET application 的转储中.我怎么能做到这一点?

一个应用程序被挂起。

application was hung

我需要确保默认调度程序包含 delayed task与某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=

关于.net - 如何在 .NET 应用程序的转储中查找默认 TaskScheduler 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36012924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com