问题标签 [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 回答
5385 浏览

.net - WinDbg/SOS:如何将来自 !threads 命令的托管线程与 System.Threading.Thread 实例相关联

使用 WinDbg 和 SOS,我有以下内容:

我的问题是:如何确定堆上 System.Threading.Thread 的哪些实例对应于实际执行的托管线程。

更新:这是调试 .NET 1.1 应用程序。在这个版本中,我从 !DumpObj 得到这样的输出

0 投票
1 回答
3313 浏览

visual-studio - Visual Studio 中的内存转储

我正在尝试遵循本教程,但使用 vs2010 中的即时窗口而不是 WinDBG:http: //blogs.msdn.com/b/dougste/archive/2005/11/25/497016.aspx

但我被以下内容难住了:

每个静态都由该数组中的特定元素表示。所以我们可以通过在Object[]占用的内存中搜索找到它:

这个“sd”不是sos.dll的一部分,所以我假设它是WinDBG或其他将内存转储到地址的扩展。

是否可以在即时窗口中运行此命令,或者以其他方式从 Visual Studio 的某个地址获取内存转储?

0 投票
1 回答
3050 浏览

windbg - 比较两个转储文件以报告增长最快的对象

用于调试托管应用程序如果我有两个转储文件,是否可以比较这两个文件?我正在考虑内存泄漏的情况,如果我在不同时间拍摄进程快照,我想知道是否有自动比较文件并获得某种类型的报告,说明哪个对象的数量和/或大小增长最大。我知道您可以通过 ANT 内存分析器生成这些类型的报告,但为此目的寻找任何免费工具/脚本。

0 投票
1 回答
1515 浏览

clr - windbg:加载程序集的版本

如果我有完整的内存转储,有人知道如何找出加载程序集的程序集版本(不是文件版本)吗?假设我有一个完整的 .net 进程转储,并且我发现在一个AppDomain中加载了两个同名的程序集。我需要知道这些程序集有哪些版本。SOS 命令!dumpmodule!dumpassembly!dumpdomain没有提供那种信息,或者我只是错过了一些东西。

先感谢您。

0 投票
5 回答
3699 浏览

windbg - 在实时调试加载了多个 CLR 版本的进程时,SOS 命令失败

我有一个 ASP.net 2.0 应用程序,我正在尝试使用 Windbg 和 SOS.dll 进行实时调试。当我将调试器附加到进程时,我看到它同时加载了 2.0 和 4.0 版本的 CLR。​​[mscorwks.dll 和 CLR.dll]。我通过 - .loadby sos mscorwks 加载我的 SOS。在此之后,我的 SOS 命令都不起作用。我收到“请求线程存储失败”、“无法从系统域获取信息”等。

我了解到这是由于不同版本的 CLR 的 mscordacwks.dll 不匹配。但是我在谷歌上找到的所有使用cordll命令加载正确版本的mscordacwks的解决方案都未能解决我的问题。特别是,我使用了 .cordll –ve –lp 但似乎没有任何区别。再次执行“!threads”命令后,我得到

“CLR DLL 状态:加载的 DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll

请求线程存储失败”

我在stackoverflow中看到了另一个关于这个问题的条目。但对他来说幸运的是,在提出解决方案之前问题就消失了,而且这不是此条目的重复

任何帮助我使用 SOS 扩展和加载到我的进程中的 2 个版本的 CLR 的线索将不胜感激。

MSCORDACWKS 版本的加载行为如下 -

0 投票
1 回答
1767 浏览

windbg - !threads 命令显示 XXX 线程 ID

当我运行 !threads 命令时,在少数线程的最左侧列中,我看到 id 为 XXX。我的理解是,这意味着死线程。这是否包括任何退出(正常或不正常)的线程,或者是否包括任何未正常退出并通过 Abort 或 Interrupt 等 API 终止的线程

0 投票
4 回答
15246 浏览

.net - WinDbg 和 SoS,如何打印/转储大字符串?

我正在使用带有 SoS 扩展的 WinDbg 调试来自生产服务器的挂起转储。

在其中一个堆栈中有一个字符串参数,我需要知道它的值。但是,它是一个相当大的字符串,当我使用DumpObj. 这是来自的输出DumpObj

如何获取此字符串实例的值?最好转储到文件中。

0 投票
1 回答
2771 浏览

.net-4.0 - 无法附加到 .net 4.0 中的进程

** 帖子已编辑,更多信息如下

我刚刚观看了两个关于高级 Dotnet 调试的精彩视频(由 Brian Rasmussen 撰写),我正在尝试重复一些步骤,但只是不知道如何处理 tis 错误:

我在谷歌上找到了一些答案,我通常理解错误的含义,但我只是不明白一个奇怪的事实:当我编译我的简单应用程序 < .NET 4.0 时,我可以像电影显示的那样附加,试图做在我编译目标 .NET 4.0 后相同,我无法附加。

谷歌的答案之一是“尝试使用非侵入模式从 windbg 附加”但是..布赖恩不使用任何此类复选框。它只适用于他的视频。

有什么不同?问题在哪里?是Windows 7还是Vista?也许一些不同的编译设置很重要?

我正在使用 MS VS 2k10 和 MS SDK 以及从 msdn 下载的 Windbg x86 和正确配置到 http 服务器的符号。该系统是 MS Vista x86。

资源(准确时间 >= 8:15): http ://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

编辑: 附加到从 VS 运行的进程时显示错误。试图附加到在 VS 之外运行的进程,windbg 不显示任何内容。

Edit2: Windbg 在我的系统中有一些令人耳目一新的问题。使用几次“Windows \ [Undock | Dock all]”菜单选项,我能够看到附加进程的内容,这是丢失的。

所以现在唯一的问题是:当附加到从 VS 开始的进程时,当它使用 target < 4.0 并再次 = 4.0 编译一次时,有什么区别?为什么以 4.0 windbg 为目标时无法以非“非侵入性”模式附加到进程。VS 2k10 发生了什么变化?

0 投票
1 回答
2275 浏览

.net - 如何下载正确版本的 mscordacwks 和 mscorwks?

我正在尝试分析使用 Windbg 和 SOS 的 IIS 内存转储,并遇到了上述文件版本的问题。我的问题是 - 有没有办法可以下载这些文件的不同版本?假设我无权访问服务器并且无法从服务器复制它们。我特别感兴趣的版本是 mscordacwks_x86_x86_2.0.50727.3603 和相应的 mscorwks dll。

0 投票
1 回答
3974 浏览

windbg - 谁持有对这些对象的引用

我看到 dumpheap -stat 命令显示我的对象的 5 个实例。当我运行 dumpheap -MT 时,它会列出所有这 5 个实例。理论上应该只有2个实例。是否有任何 windbg/sos 命令来跟踪谁持有对这些实例的引用。