问题标签 [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.
windbg - GC vs GC SuspendedEE
当我运行 !threads -special 命令时,我得到了关注。为简洁起见,我已经删除了输出中的其他行。
15 26ec GC 悬浮液EE
15 3174 GC
任何想法 GC 和 GC SuspendedEE 之间有什么区别
.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中查看本机内存使用情况(在托管代码的上下文中)?
c# - 静态对象被固定,不能被 GC 重新分配?
我的类中有一个静态变量,当我通过 windbg/sos 查看这个对象时,它显示这个对象为 Pinned。我假设这意味着 GC 不能在其他任何地方分配这个对象。任何想法为什么静态变量被视为固定?
这是我的类中这个变量的声明
这是windbg的输出形式
请参阅 !gcroot 的输出,这显示为 HANDLE(PINNED)。我误读了这个输出吗?
c# - 是什么导致此应用程序挂起(可能在本机端)
我有一个与本机 dll 互操作的 .net 托管应用程序。问题是有时应用程序只是挂起并且没有响应。在托管方面,我没有看到任何线程调用堆栈在等待或休眠。SOS !threads 和 !syncblk 也不显示任何锁。知道我应该查看本机方面以找出被阻止的内容等吗?
windbg - 确定是否在 x64 或 x86 机器上生成了进程转储
如果我有一个进程转储文件,是否知道转储是在 x64 机器还是 x86 机器上生成的?
.net - 使用 WinDbg 分析 .NET 转储
我正在使用 windbg 对转储执行分析。以下是我运行的命令
.loadby sos mscorwks
- 加载 sos dll~* e !clrstack
- 查看所有线程~18s
- 将上下文更改为我要分析的线程!clrstack
- 查看该线程的调用堆栈。
现在,我想查看堆栈中的每一帧并查看那里的对象/变量的值。我应该如何进行?
有没有办法找出线程实际卡住的方法中的行号?
c# - 为什么我会在此方法中看到对 WaitForMultipleObjectsEx 的调用?
我有一个 .NET Windows 窗体应用程序,它偶尔会进入挂起状态。当我转储进程并通过 WinDbg/SOS 打开它时,它显示一个线程有一个调用,kernel32!WaitForMultipleObjectsEx
尽管我没有在该特定方法中的任何事件对象上调用任何 WaitXXX API。这在我正在检查 InvokedRequired 和 IsDisposed API 中说过。对 InvokedRequired 或 IsDisposed API 的任何调用是否会在内部调用任何 WaitXXX API?
这是线程的调用堆栈。
c# - 哪个线程正在使用给定的对象?
- 我运行
dumpheap -type MyObjectType
命令来获取MyObjectType
. 它显示堆上的三个对象。 - 我跑去
dumpheap -mt <method table address>
找地址。 - 我运行
!gcroot <address>
命令来查找对这些对象的引用,什么也没找到 !do <address>
它提供了有关此对象等字段的详细信息。
如何找到正在引用或使用对象的线程?有什么命令可以找出来吗?
.net - 什么可能导致 mscorwks!ThreadpoolMgr::FireTimers 的访问冲突?
以下访问冲突每隔几天就会使我的应用程序崩溃。这可能是什么原因造成的?
这是堆栈跟踪
这是我的版本信息
.net - 调用堆栈中的 InlinedCallFrame
有时在托管调用堆栈中,尽管有任何方法调用我都会得到 InlinedCallFrame。这到底是什么意思?