如何将 CLR 方法表条目与 MethodDesc 进行匹配?
使用 sos,我可以获得特定类的方法表条目列表: !DumpMT -MD 1d3c58 PDB symbol for mscorwks.dll not loaded EEClass: 001d195c Module: 001d2f2c Na…
是否可以实现 GC.GetAliveInstancesOf() (用于调试)?
我知道这是之前回答过,但我想提出一个有些不同的问题。 是否有任何可行的方法来实现 GC.GetAliveInstancesOf(),可以在 Visual Studio 调试监视窗口…
自动化 VisualStudio 即时窗口
我正在尝试自动化打开托管应用程序的故障转储和检索堆栈跟踪的过程。 Windgb 有时可以工作,但让它加载正确版本的 sos.dll 是一场噩梦,除非处理转储…
垃圾收集器如何决定何时杀死弱引用持有的对象?
我有一个对象,我相信该对象仅由 WeakReference 持有。我已经使用 SOS 和 SOSEX 追踪了其参考持有者,两者都证实了情况确实如此(我不是 SOS 专家,所…
如何查看堆栈上我的托管对象?
我在 VisualStudio 中使用 SOS.dll 来调试我的 C# 程序。程序如下。 调试命令是!DumpStackObjects。 class Program { static void Main() { Int32 res…
sos.dll 返回的对象大小与内存中进程大小不匹配
我使用以下 sos 命令来枚举正在运行的 asp 应用程序(托管在 Windows xp 4 GB 计算机上)中特定类型的所有实例。 .foreach (obj { !dumpheap -type ::…
WinDbg/SOS:!SyncBlk 输出的说明
我正在寻找 SOS 的 !SyncBlk 命令生成的输出的描述。 特别是我在“MonitorHeld”列中没有找到有用的解释。此列显示一系列故障转储中的高值。 示例: 0…
如何使用 !DumpHeap (.load sos) 仅转储第一个对象地址
我的内存中有几百万个对象。我想找到它们的 gcroot,所以我需要一个对象地址。然而,DumpHeap 转储所有对象所花费的时间比我耐心等待的时间还要长。我…
我可以在调试时看到什么在引用对象吗?
在调试 Silverlight 应用程序时是否可以查看对象的所有当前引用? 我知道 WPF 开发人员能够使用 SOS.dll,但在调试 Silverlight 应用程序时无法将其加…
WinDbg SOS 异常堆栈中函数地址旁边的+0x10 是什么意思?
示例: 内部异常: 堆栈跟踪(生成): SP IP功能 003D8E9C 03B21BD7 Something!Blah.Blah.FunctionName(System.String)+0xa8 +0xa8 部分表示什么?…
如何使用 !gcroot
从加载了 SOS 调试扩展的 Visual Studio 即时窗口中,我可以执行 !dumpheap -stat 以下操作 然后我得到类似这样的信息: total 108,014 objects Stati…
使用SOS,可以一次操作将分支中的所有文件合并到主干吗?
有没有办法告诉SOS将给定分支中的所有最新文件合并到主干中? 我已经检查了所有要更改的文件。我可以通过选择最新的分支修订版并使用“修订版”->“合…
在 32 位机器上的 64 位转储中丢失 WinDbg
我是 WinDbg 的新手,从 64 位 Windows 2008 Server 上的 WER ReportQueue 文件夹中获取了此转储。 我需要检查转储,并希望在安装了 Windows 调试工具…
.Net 内存转储:!eeheap -gc:GC 生成从哪里开始和结束?
我认为我在这里遗漏了一些基础知识,所以希望这篇文章可以澄清这一点。 我已经进行了转储,正在查看托管堆,并且有兴趣专门查看每个堆中的对象。 以下…