问题标签 [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 投票
1 回答
933 浏览

debugging - 什么是 mdToken,它与 MethodTable 有何不同?

如标题所示,它是什么以及它与 MethodTable 有何不同?

0 投票
1 回答
863 浏览

.net - 使用 SOS.dll 进行事后 .NET 调试

我正在开发一个混合模式应用程序(C++/CLI、C++、一些 C#),当它在现场崩溃时,会创建一个内存转储。我通常从客户那里得到这些转储,并试图找出问题所在。

问题是 - 如何处理托管代码的事后调试?我通常将 WinDbg 与 SOS.dll 一起使用,但 SOS 似乎不向后兼容!我最近运行了 Windows 更新,现在我无法从客户端站点加载任何小型转储。它抱怨错误的 SOS 版本。

如何获取和加载以前的版本?我做错了什么?

0 投票
2 回答
1164 浏览

windbg - 如何处理可能导致我的应用程序进入挂起状态的事件

我正在为应用程序挂起问题进行转储文件分析。这是堆栈跟踪中的一个有趣的行。

查看MSDN 中的WaitForMultipleObjectEx描述,第二个参数是 const HANDLE *lpHandles。这让我觉得我应该能够做一个 !handle 7ffdf000 来弄清楚它在等待哪个事件,但是当我这样做时,我得到了关注

类型错误检索类型

有什么想法我可能在这里做错了,或者有什么提示可以获取有关挂起原因的更多详细信息?

0 投票
1 回答
3751 浏览

asp.net - windbg 无法加载 sos clr

我不确定 windbg 是正确的工具,但这就是我现在正在尝试的

我的 asp.net 应用程序似乎有内存泄漏,几乎每次页面加载时它都会增长约 3 MB(然后它又会下降......)

我想读取整个进程内存并准确查看存储的内容是不必要的。

于是我运行windbg,附加到webserver40.exe进程

然后我尝试

我得到

调用 LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) 失败,Win32 错误 0n193“%1 不是有效的 Win32 应用程序。”

请检查您的调试器配置和/或网络访问。

看来我在 Framework AND Framework64 中有这个 sos.dll

我尝试使用

但没有加载

我不明白它为什么要寻找有效的 32 位应用程序。我在带有 64 位 Windows 的 64 位电脑上。

我怎样才能加载这个 sos 东西?

另外,当我开始时,我会收到此警告

WARNING: Process 7240 is not attach as a debuggee 可以检查进程但不会收到调试事件

我也试过loadby sos mscorwks它没有用,但我知道它已经停产了。我在asp.net 4

我还在某处读到,代码应该在加载 sos 之前在调试中停止,这只会挂起 VS 2010。

非常感谢。

同样,如果有其他工具可以更好地帮助我,我会全力以赴 :-)

0 投票
1 回答
780 浏览

.net - 如何判断它是托管内存泄漏还是本机内存泄漏?

我与本机 dll 互操作的 .NET 进程正在引发 OutOfMemory 异常。以下是 !address -summary 和 --eeheap-gc 组合命令。这是否意味着它是托管泄漏还是本机泄漏?

0 投票
6 回答
27954 浏览

.net - WinDbg中出现“SOS的版本与你正在调试的CLR版本不匹配”怎么办?

我的一些应用程序有问题。它是在 Windows 2003 Server (x86) 的 IIS6 下运行的基于 wcf 的应用程序:
在事件日志中,我从“W3SVC-WP”源 (EventID=2262) 收到这样的错误:

我试图弄清楚发生了什么。我已经为孤儿工作进程设置了创建转储,如本KB中所述。当发生死锁时,会创建一个小型转储。
然后我用这个小型转储来尝试了解发生了什么。这是我卡住了。

我运行 WinDbg x86,打开我的转储,然后:

如何处理这个错误- “SOS 的版本与您正在调试的 CLR 的版本不匹配”?

我在 VS2010 中打开 minidump 时遇到了同样的错误(“SOS 的版本与您正在调试的 CLR 的版本不匹配”)。

我读过这篇文章 - http://tech-thinker.com/Forums/tabid/62/forumid/12/postid/471/scope/posts/Default.aspx,并尝试安装KB2518870。它没有帮助。

0 投票
2 回答
1887 浏览

windbg - Windbg - 转储 System.Guid

当我在 windbg 中为 System.Guid 对象使用 !do 时,我得到了该 GUID 对象的字段列表。如何查看此 GUID(字符串表示)的值是什么?

0 投票
2 回答
6022 浏览

debugging - windbg.exe:加载数据访问DLL失败,0x80004005

我正在尝试从在 x64 机器上运行的进程调试 32 位进程转储。我在 x64 笔记本电脑上运行 x86 版本的 windbg。我已经遵循了这里的建议,但我仍然得到这个:

据我所知,mscordacwks_x86_x86_4.0.30319.237.dll已成功加载,但我仍然收到错误消息。我错过了什么?

0 投票
1 回答
1532 浏览

.net-4.0 - !address -summary 最新 Windbg/SOS 的命令输出

我下载并安装了 Windows 调试工具的最新版本(6.12.2.633)。使用 .NET 4.0 运行它。当我运行!address -summary命令时,它的输出似乎与我在以前版本的 Windbg/SOS for .NET 3.5 中看到的不同。任何人都知道我在哪里可以找到最新!address -summary命令的文档。SOS 内置帮助不是很有帮助

0 投票
2 回答
2371 浏览

.net - 从进程转储中获取 .NET 框架版本

可能重复:
我如何知道故障转储的 CLR 版本?

如果我在 WinDbg 中打开(托管进程的)转储文件,是否可以找到该进程正在使用的 .NET 框架版本?