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

windbg - GC vs GC SuspendedEE

当我运行 !threads -special 命令时,我得到了关注。为简洁起见,我已经删除了输出中的其他行。

15 26ec GC 悬浮液EE
15 3174 GC

任何想法 GC 和 GC SuspendedEE 之间有什么区别

0 投票
1 回答
338 浏览

.net - !address -summary 中的 RegionUsageHeap 是什么意思

我有一个 .NET 应用程序,它与具有以下层的本机 dll 互操作。

a) C++ API GetNames() 返回 wchar_t 实例列表
b) C++/CLI API GetNames2() 代码调用 C++ API,将 wchar 列表编组为 .NET 字符串,返回此 .NET 字符串列表
c) 托管代码 C# 调用互操作层 GetNames2() API 和显示字符串列表

我在互操作层中调用 CoTaskMemFree API 来释放原生 wchar 字符串。但是我只是想知道如何查看由缺少 CoTaskMemFree 调用引起的内存泄漏。所以我注释掉了对 CoTaskMemFree 的调用。在这种情况下,我的理解是,如果我附加 windbg 并运行 !address -summary 命令,在本机端完成的任何分配(尚未释放)都应该显示在 RegionUsageHeap 下,但它似乎没有报告它。任何想法如何在windbg中查看本机内存使用情况(在托管代码的上下文中)?

0 投票
1 回答
585 浏览

c# - 静态对象被固定,不能被 GC 重新分配?

我的类中有一个静态变量,当我通过 windbg/sos 查看这个对象时,它显示这个对象为 Pinned。我假设这意味着 GC 不能在其他任何地方分配这个对象。任何想法为什么静态变量被视为固定?

这是我的类中这个变量的声明

这是windbg的输出形式

请参阅 !gcroot 的输出,这显示为 HANDLE(PINNED)。我误读了这个输出吗?

0 投票
1 回答
81 浏览

c# - 是什么导致此应用程序挂起(可能在本机端)

我有一个与本机 dll 互操作的 .net 托管应用程序。问题是有时应用程序只是挂起并且没有响应。在托管方面,我没有看到任何线程调用堆栈在等待或休眠。SOS !threads 和 !syncblk 也不显示任何锁。知道我应该查看本机方面以找出被阻止的内容等吗?

0 投票
4 回答
4771 浏览

windbg - 确定是否在 x64 或 x86 机器上生成了进程转储

如果我有一个进程转储文件,是否知道转储是在 x64 机器还是 x86 机器上生成的?

0 投票
1 回答
10349 浏览

.net - 使用 WinDbg 分析 .NET 转储

我正在使用 windbg 对转储执行分析。以下是我运行的命令

  1. .loadby sos mscorwks- 加载 sos dll
  2. ~* e !clrstack- 查看所有线程
  3. ~18s- 将上下文更改为我要分析的线程
  4. !clrstack- 查看该线程的调用堆栈。

现在,我想查看堆栈中的每一帧并查看那里的对象/变量的值。我应该如何进行?

有没有办法找出线程实际卡住的方法中的行号?

0 投票
3 回答
901 浏览

c# - 为什么我会在此方法中看到对 WaitForMultipleObjectsEx 的调用?

我有一个 .NET Windows 窗体应用程序,它偶尔会进入挂起状态。当我转储进程并通过 WinDbg/SOS 打开它时,它显示一个线程有一个调用,kernel32!WaitForMultipleObjectsEx尽管我没有在该特定方法中的任何事件对象上调用任何 WaitXXX API。这在我正在检查 InvokedRequired 和 IsDisposed API 中说过。对 InvokedRequired 或 IsDisposed API 的任何调用是否会在内部调用任何 WaitXXX API?

这是线程的调用堆栈。

0 投票
2 回答
459 浏览

c# - 哪个线程正在使用给定的对象?

  1. 我运行dumpheap -type MyObjectType命令来获取MyObjectType. 它显示堆上的三个对象。
  2. 我跑去dumpheap -mt <method table address>找地址。
  3. 我运行!gcroot <address>命令来查找对这些对象的引用,什么也没找到
  4. !do <address>它提供了有关此对象等字段的详细信息。

如何找到正在引用或使用对象的线程?有什么命令可以找出来吗?

0 投票
1 回答
564 浏览

.net - 什么可能导致 mscorwks!ThreadpoolMgr::FireTimers 的访问冲突?

以下访问冲突每隔几天就会使我的应用程序崩溃。这可能是什么原因造成的?

这是堆栈跟踪

这是我的版本信息

0 投票
0 回答
695 浏览

.net - 调用堆栈中的 InlinedCallFrame

有时在托管调用堆栈中,尽管有任何方法调用我都会得到 InlinedCallFrame。这到底是什么意思?