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

wpf - 如何从 SOS 评估 silverlight/WPF 中的依赖属性?

这个问题相当简单——我正在尝试使用 sos 调试 silverlight 应用程序中的内存泄漏,我能够使用 !gcroot 获得一些好的信息来确定哪些对象具有对应该被清除的对象的开放引用;但在这些情况下,它们往往是核心 UI 元素(如网格和故事板),如果无法查看它们的依赖属性值(如名称),我无法真正区分它们。尝试使用 !dumpobj 查看依赖属性对我来说简直是天方夜谭,它们都是相互引用的静态类(即属性),我最终只能绕圈子。在任何时候,我都无法在任何地方找到依赖属性的单个实际值。

我在谷歌上搜索了很多,但只能找到其他人在问这个问题,或者猜测没有得到答案。 http://blogs.msdn.com/tess/archive/2008/09/16/qa-reader-emails-about-net-memory-leaks-and-random-questions.aspx就是这样一个没有答案的页面。

0 投票
4 回答
5605 浏览

memory - 我可以从 WinDbg 运行 .NET 垃圾收集吗?

我正在研究为什么托管进程使用大量内存。有没有办法GC.Collect(3)从 WinDbg 运行,以便我可以专注于实际的内存分配?

0 投票
2 回答
9209 浏览

debugging - 调试 .NET CLR 应用程序时,如何查看评估堆栈上的局部变量?

我正在使用 Windbg(带有 sos 扩展名)并尝试调试崩溃的应用程序。我能够转储引发异常的调用的 IL,并且通过检查代码,如果我可以转储评估堆栈的内容,我似乎可以获得所需的信息。可以用 WinDbg & sos 做什么吗?

这是我所做的:

  1. 启动 WinDbg
  2. 附加到崩溃的进程
  3. loadby sos mscorwks (加载 sos 扩展)
  4. !token2ee theModuleName 0600009a (其中theModuleName是我正在调试的应用程序(和程序集)的名称,9a是 Windows 错误报告工具报告的崩溃方法的方法偏移量。我得到了这个输出:

    模块:000e2c3c (theApplicationName.exe)
    令牌:0x0600009a
    MethodDesc:000e67c8
    名称:MyNamespace.MyClassName.theCulpritFn(MyOtherClass)
    JITTED 代码地址:0081b1d0

  5. !dumpil 00e67c8 (它为所讨论的方法转储了 IL)。这是输出:

    问题是:有没有办法让我看到在抛出异常之前压入堆栈的内容。如果我没记错的话,传递给异常构造函数的参数应该是评估堆栈上索引 0 处的局部变量。

    PS 当我尝试调用!clrstack -a时,我收到一条消息:无法遍历托管堆栈。当前线程可能不是托管线程。您可以运行 !threads 以获取进程中的托管线程列表。

谢谢!

0 投票
6 回答
3818 浏览

c# - 实时调试堆栈溢出

我有一个托管代码 Windows 服务应用程序,由于托管 StackOverFlowException,它在生产中偶尔会崩溃。我知道这一点是因为我在崩溃模式下运行了 adplus 并使用 SoS 分析了崩溃转储事后分析。我什至附加了 windbg 调试器并将其设置为“未处理的异常”。

我的问题是,我看不到任何托管堆栈或切换到任何线程。当调试器中断时,它们都被拆除了。

我不是 Windbg 专家,并且没有在实时系统上安装 Visual Studio 或使用该工具进行远程调试和调试,是否有人对我如何从有问题的线程中获取堆栈跟踪有任何建议?

这就是我正在做的事情。

!线程

...

XXXX 11 27c 000000001b2175f0 b220 已禁用 00000000072c9058:00000000072cad80 0000000019bdd3f0 0 Ukn System.StackOverflowException (0000000000c010d0)

...

此时你会看到 XXXX ID 表明线程已经死了。

0 投票
3 回答
240 浏览

version-control - 无法在 SourceOffsite 中递归地签入文件夹

我正在尝试签入其中包含更多文件夹的文件夹。如何使用 SourceOffsite 以递归方式检查它们?如果我选择父文件夹,则只有文件会被签入。

谢谢

0 投票
2 回答
7105 浏览

c# - 如何在 WinDBG 中查看托管异常详细信息?

VS2005 C# 编译器在我们团队的夜间构建过程中崩溃。我用 WinDBG 附加到它,加载 SOS 扩展,打印调用堆栈,但看不到异常信息。

我试过了!PrintException,如下:

这是调用堆栈的顶部:

0 投票
4 回答
774 浏览

c# - 我正在寻找指向 cdb/windbg + .net 文档的链接

我刚开始使用 cdb,我喜欢它!

我找到了一些关于使用 cdb 的有趣文章并将其添加到书签,但我很想看看其他人的资源。

您使用哪些站点从 cdb (windbg) 中提取最大实用性

0 投票
1 回答
2393 浏览

.net - .Net 内存转储:!eeheap -gc:GC 生成在哪里开始和结束?

我想我在这里遗漏了一些基础知识,所以希望这篇文章可以澄清这一点。

我已经转储并正在查看托管堆,并且有兴趣专门查看每个堆中的对象。这是调试器的输出:

我希望我可以获取 GC 代的起始地址,然后查看从该地址开始一直到下一代的段。我相信堆是压缩的,因此希望在第一段找到第 2 代,这看起来是这样的:

但是,我无法确定这在哪里结束,因为我找不到第 1 代从0x3cc9d8a0开始的位置。

我认为我在这里遗漏了上述解决方案的一些基本原理。

有什么建议么?

0 投票
4 回答
3774 浏览

windbg - Windbg:SOS.dll:!gcroot:DOMAIN(xxx):HANDLE(Pinned):它真的意味着对象被固定了吗?

SOS.dll Windbg 扩展的文档似乎很少。发出 !gcroot <address> 后,我得到了包含以下内容的内容:

“HANDLE(Pinned)”真的意味着有一个 GCHandleType.Pinned 类型的 GCHandle 正在植根这个对象吗?

0 投票
2 回答
3672 浏览

.net - 在 32 位机器上使用 64 位转储迷失在 WinDbg 中

我是 WinDbg 的新手,从 64 位 Windows 2008 服务器上的 WER ReportQueue 文件夹中获得了这个转储。我需要检查转储,并希望在我安装了 Windows 调试工具包的开发人员机器上进行检查。当我尝试加载 SOS 时,出现以下我从未见过的错误:

我的机器运行的是 32 位 Windows 7,它显然没有 Framework64 文件夹。

我需要一些建议来指出我正确的方向。如果我想在 32 位机器上检查 64 位进程的转储,我需要做什么?是否有可能做到这一点?

提前非常感谢!