问题标签 [sos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
156 浏览

windbg - 为什么syncblk位于-4而不是0?

因此,如果您想查看对象的同步块,则在 sos 下,您必须查看对象地址之前的 -4 个字节(在 32 位机器上)。有谁知道返回 4 个字节的智慧是什么?我的意思是他们可以在 0 处有同步块,然后在 +4 处键入句柄,然后在 +8 处键入对象字段。

0 投票
2 回答
3808 浏览

memory-management - WinDbg 替代 !dumpheap 类型?

我从 !dumpheap -stat 得到以下行

我很想知道 441 762 字符串的用途。做一个

会列出所有,还是我弄错了?我怎样才能分析其中的一些?

0 投票
2 回答
6668 浏览

memory-leaks - windbg !gcroot
不归根

如果 !gcroot 返回一个空线程列表是什么意思?

在执行 !dumpheap -type System.String 时,我有很多条目,但大多数都没有返回任何内容,如上例所示。

0 投票
1 回答
557 浏览

silverlight - IE下的Silverlight应用程序附加到Windbg

是否可以将 Windbg 附加到在 Internet Explorer(或任何其他浏览器)下运行的基于 Silverlight 的应用程序?如果可能的话,我是否必须将windbg附加到浏览器,这将使我进入Internet Explorer下的那个迷你CLR?

0 投票
3 回答
743 浏览

sos - 有关线程正在等待的对象的信息

如果我有以下堆栈跟踪,我看到一个线程正在等待某个锁。如何获取有关此线程正在等待的对象的信息?我在想我应该能够使用 SyncBlk 命令,但似乎它只能提供有关锁及其所有者线程的信息。

0 投票
1 回答
3217 浏览

windbg - Windbg 本机调用堆栈跟踪没有意义

我有一个简单的测试程序导致无限等待锁定。

所以主线程在尝试执行 Monitor.Enter(sync) 时基本上被锁定。如果我在主线程上查看 !clrStack ,它的输出基本上表明它是有意义的,但是当我尝试查看堆栈的本机端时,我希望看到一些 Wait on single/multiple object type of call 但我没有看到它。谁能解释一下。谢谢

未加载 mscorwks.dll 的 PDB 符号
OS 线程 ID:0x1e8 (0)
ESP EIP
0012f0a8 77455e74 [GCFrame: 0012f0a8]
0012f178 77455e74 [HelperMethodFrame_1OBJ: 0012f178] System.Threading.Monitor.Enter (System.Threading.Monitor.Enter (System.Threading.Monitor.Enter (System.Threading.Monitor.Enter) (System.Threading.Monitor.Enter (System.Threading.Monitor.Object) 0012f1d10.Program.Object) 0012f1d10. Main(System.String[])
0012f400 70fc1b4c [GCFrame: 0012f400]
0:000> kb
ChildEBP RetAddr Args to Child
警告:堆栈展开信息不可用。以下框架可能是错误的。
0012EEB4 710AFB92 0012EE68 002D6280 00000000 NTDLL!KIFASTSYSTEMCALLRER
0012EF1C 710AF7C3 00000000 MSCORWKS!STREATNAMEFREEBUFFER + 0x1B1F2
0012EF3C 710AF8CC 00000001 002D6280 00000000 MSCORWKS!STRONDNAMEFREEBUFFER + 0x1ae23
0012efc0 710af961 00000001 002d6280 00000000 mscorwks!StrongNameFreeBuffer + 0x1af2c
0012f010 710afae1 00000001 002d6280 00000000 mscorwks!StrongNameFreeBuffer + 0x1afc1
0012f06c 70fdc5ae FFFFFFFF 00000001 00000000 mscorwks!StrongNameFreeBuffer + 0x1b141
0012f080 710df68a FFFFFFFF 00000001 00000000 mscorwks!LogHelp_NoGuiOnAssert + 0x10562
0012f10c 710b1154 002aad90 FFFFFFFF 002aad90 mscorwks!StrongNameFreeBuffer + 0x4acea
0012f128 710b10d8 42b8b47d 00000000 002aad90 mscorwks!StrongNameFreeBuffer + 0x1c7b4
0012f1e0 70fc1b4c 0012f1f0 0012f230 0012f270 mscorwks!StrongNameFreeBuffer + 0x1c738
0012f1f0 70fd2219 0012f2c0 00000000 0012f290 mscorwks + 0x1b4c
0012f270 70fe6591 0012f2c0 00000000 0012f290 mscorwks!LogHelp_NoGuiOnAssert + 0x61cd
0012f3ac 70fe65c4 0023c038 0012f478 0012f444 mscorwks!CoUninitializeEE + 0x2ead
0012f3c8 70fe65e2 0023c038 0012f478 0012f444 mscorwks!CoUninitializeEE + 0x2ee0
0012f3e0 7103389d 0012f444 42b8b0f1 00000000 mscorwks!CoUninitializeEE + 0x2efe
0012f544 710337bd 002332e0 00000001 0012f580 mscorwks!GetPrivateContextsPerfCounters + 0xf546
0012f7ac 71033d0d 00000000 42b8b9c9 00000001 mscorwks!GetPrivateContextsPerfCounters + 0xf466
0012fc7c 71033ef7 00ce0000 00000000 42b8979 mscorwks!GetPrivateContextsPerfCounters+0xf9b6
0012fccc 71033e27 00ce0000 42b8b8a1 00000000 mscorwks!CorExeMain+0x168
* 错误:找不到符号文件。默认为 C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll 导出符号 - 0012fd14 71cf55ab 71033d8f 0012fd30 71f37f16 mscorwks!CorExeMain+0x98
*
错误:找不到符号文件。默认为出口符号C:\ WINDOWS \ SYSTEM32 \ mscoree.dll中-
0012fd20 71f37f16 00000000 71cf0000 0012fd44 mscoreei CorExeMain + 0x38! 0012fd30
71f34de3 00000000 7723d0e9 7ffd8000 mscoree CreateConfigStream + 0x13f! 0012fd44
774319bb 7ffd8000 084952f9 00000000 mscoree CorExeMain + 0x8中! 0012fd84
7743198e 71f34ddb 7ffd8000 00000000 ntdll!RtlInitializeExceptionChain+0x63
0012fd9c 00000000 71f34ddb 7ffd8000 00000000 ntdll!RtlInitializeExceptionChain+0x36

0 投票
1 回答
3712 浏览

.net - 检查内存转储中所有实例的字段

我有一个用于解决客户端问题的内存转储。这是一个 .NET (C#) 应用程序。我的应用程序的问题是创建了太多特定类的实例。这个类有 6300 个实例,而应该有 20 个。我想遍历所有这些实例并调用每个实例的名称字段。在 WinDbg/SOS 中是否有任何简单的方法可以做到这一点?

我知道我可以使用 !dumpheap -type {typename} 来查找该类的所有实例,但我不确定如何将它们全部展开并查看我感兴趣的字段。

0 投票
1 回答
1888 浏览

windbg - psscor2 有 64 位版本吗?

我正在尝试使用 WinDbg 调试在 Windows 7/64 位上运行的 .NET 3.5、32 位应用程序。我想使用 psscor2,但我无法加载它。我也无法加载sos。

当我尝试加载 psscor2 时,出现此错误:

当我尝试加载 sos 时,出现此错误:

我的猜测是 64 位版本的 WinDbg 无法加载 psscor2 和 sos 等 32 位扩展 dll。但是我找不到 32 位版本的 WinDbg 或 64 位版本的 psscor2 的下载。

PS:我已经(某种程度上)解决了这个问题:我在 32 位虚拟机中安装了 Windows 7 SDK,并将 WinDbg 的 32 位版本从那里复制到我的开发 PC。但是必须有一个更简单的方法来做到这一点!

0 投票
0 回答
340 浏览

silverlight - 使用 WinDBG 和 SOS 调试 Silverlight 时出现死端

我是 WinDBG 的新手。我正在寻找内存泄漏的原因,并且就我目前的知识而言,我已经掌握了。

我的 MVVM 应用程序正在泄漏MyLovelyView对象。

在 WinDBG 中,我运行!dumpheap -type MyLovelyView并获得以下信息:

我知道我现在不应该MyLovelyView在内存中有任何对象,并且我已经强制 GC 运行多次以确保它们不只是闲逛。

所以我使用命令检查根!gcroot 05f7dd70,结果如下:

我试图使用第三方控件重现泄漏,这是一个简单的虚拟应用程序,到目前为止,一直没有成功。

在这一点上,我被困住了。有更多调试经验的人知道我的下一步应该是什么吗?

有关其他信息,查看 XAML 中的内容可能会有所帮助MyLovelyView

谢谢,

更新:如果我从 XAML(上图)中删除绑定,则!gcroot输出如下所示:

(所有内存地址都已更改,因为这是重新运行)

0 投票
2 回答
8394 浏览

windbg - 使用 WinDbg 将 Managed Byte[] 的内容写入文件

我有一个显示 OutOfMemoryException 的生产服务器的故障转储。异常本身与此处无关。

我碰巧运行了一个 !dso 来查看堆栈对象:

我认为 MemoryStream 可能与错误有关,所以我将其转储:

哇,56,071,048 字节的缓冲区似乎有点大。我想看看这个缓冲区的内容:

数组的前 10 个元素如下:

这是一个巨大的阵列。我宁愿不 !dumparray 整个事情。我想在文件中查看输出。

问题

是否可以将此 Byte[] 的内容转储到文件中?

我熟悉 .writemem 命令,但我似乎无法让它工作。我试过写整个长度,但 WinDbg 不喜欢这样:

我是否错误地格式化了该 .writemem 命令?