问题标签 [sosex]
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.
.net - 获取 LOH 中的对象实例列表
我在托管堆中有数百个MyClass实例。其中一些在大对象堆中。下面是各种堆结构的外观
我的问题是
1. 如何找到大对象堆中所有MyClass实例的地址。2. 有没有办法在大对象堆中的MyClass
实例上运行 !ObjSize ?
c# - 有没有办法在通过 SOS.dll 分析转储文件时检查是否触发了垃圾收集
我正在分析“OutofMemory”异常的 .dmp 文件。对象在内存中停留的时间很长,那么有没有一个命令可以检查垃圾收集是否是通过使用 SOS.dll 或 SOSEX 触发的?
windbg - 获取在其调用堆栈中包含某个 .NET 函数的线程?
我有一个带有 73 个线程的用户模式转储。其中一些是托管的,其中一些是本地的。我想找到托管线程,它的调用堆栈包含某个托管函数。
我在调试器中加载了SOSEX扩展。
现在我会~*e !mk
转储所有托管线程,然后手动浏览它们以寻找我需要的东西 - 太长而且令人厌烦。
有没有更好的办法?
c# - 警告:此地址有多个托管方法
我遇到了一个 C# 应用程序问题,该应用程序可能会在没有警告或有意义的信息的情况下随机崩溃。相同的数据可以通过应用程序,但不会同时崩溃,有时甚至不会崩溃。
我使用 WinDbg 来获取有关异常的一些信息。有一个NullReferenceException
被抛出和一个Access Violation
错误。
使用 SOSEX,我有一个使用!mk
. 我有一个堆栈,顶部有以下内容:
开头的行[WARNING: Multiple managed methods at this address]
似乎特别令人担忧——这是什么意思?
从下往上看堆栈,到目前为止一切看起来都还不错。然后一个随机的方法调用IEnumerable.FirstOrDefault
抛出它。该VersionedSettings.GetSetting(...)
方法不进行此类调用。这就是为什么我有点困惑。
编辑:我!verifyheap
在 WinDbg 中运行,输出是“未检测到堆损坏。”。我对 WinDbg 的了解有限,所以我不确定这个命令有多准确,但我认为值得添加。
有人知道发生了什么吗?
clr - 在 CDB/WinDbg 内的托管堆栈中从堆栈帧导航到堆栈帧
我收到了十几个转储文件。使用 windbg/sosex 命令!dumpstack -EE
,他们中的很多人最后都会显示这些行:
不幸的是,尝试获取局部变量!clrstack -a
并没有给我合理的结果:
有没有办法移动到最后一帧之外的另一帧?(以便在此框架中获取本地人)。
在本机模式下,我可以这样做:
然后我可以在前一帧中有当地人
我想知道如何对托管堆栈执行相同的操作,以便我可以!clrstack -a
在以前的帧中执行此操作。我也想知道这个堆栈帧中的函数参数值/引用。
是否有执行此类操作的命令?
.net - 如何找到相关的 SqlCommand 对象
我正在寻找高内存问题的转储文件。该转储文件中突出的一件事是超过 300,000 个 DataRow 对象。我们对存储在内存中的 DataTable 对象的 sql 数据库运行查询。我想知道是什么查询负责创建这么多 DataRow 对象。我可以在 DataRow 和 DataTable 对象中看到各种字段,但无法弄清楚如何找到相关的 SqlCommand 对象,因为这应该让我可以访问 CommandText 并因此访问查询。有人可以帮我弄清楚如何获取 SqlCommand 对象吗?
windbg - 从循环中运行命令
我想从以下命令对每个地址运行 !refs 命令
如何做到这一点。我知道可以按如下方式创建一个循环
但是我怎样才能访问可以在循环中使用!refs 的对象地址?
c++ - DebugDiagv2 显示导致最大泄漏的 UNKNOWN_MODULE
最大的内存消耗函数是 DomainBoundILStubClass.IL_STUB_PInvoke(UInt32)。该模块的基地址是 0x00000000,所以这可能就是它是“UNKNOWN_MODULE”模块的原因。以下是功能详情:
功能详情
在堆栈跟踪的顶部或顶部附近,此函数的堆栈为零,所以我不知道是什么在调用它。
我假设这是聚合所有对 malloc 的 pinvoke 调用。那是对的吗?由于“分配类型”是 C/C++,这是否还包括对 operator new 的 pinvoke 调用?