10得票3回答
.NET线程如何等待未被任何线程拥有的syncblk?

我有一个应用程序的崩溃转储,显示一堆线程在等待syncblk,而syncblk显示它没有拥有线程。这怎么可能?我正在尝试在测试应用程序中复现这个症状,但我无法弄清楚可能发生什么来产生这个结果......即使拥有线程退出或死亡而没有释放syncblk,仍然显示为拥有对象,只是线程ID为“XXX”...

15得票3回答
Windbg脚本中的字符串比较

使用Windbg脚本,我想检查任何函数的参数中是否存在特定字符串。0:000> g Breakpoint 0 hit eax=00000001 ebx=00000000 ecx=00422fc6 edx=00000000 esi=03d574e8 edi=00000005 eip=76d...

10得票2回答
使用windbg调试.NET dump文件

我使用 procdump.exe 工具的 -ma 选项和一个高 CPU 触发器来生成了一个 .NET 进程的转储文件,并希望在运行的线程中查看有关我的代码正在执行什么的线索。我得到了以下信息:*** procdump -ma -c 65 -s 2 -n 3 service.exe *** P...

12得票1回答
首次运行时,windbg中的sos.threads异常。

当我在windbg(x64),版本6.3.9600.16384中加载崩溃转储并加载用于.net的sos扩展时,第一次运行!threads命令时,我会收到以下错误:c0000005 Exception in C:\Windows\Microsoft.NET\Framework64\v4.0.30...

10得票1回答
手动在WinDBG中设置断点

我正在尝试使用WinDBG检查一个可执行文件的汇编代码,但是我很难找到它。我想在程序的第一条指令处设置断点,但是当我试图手动这样做(使用模块的地址)时,WinDBG告诉我由于“无效访问内存位置”,它无法在该位置插入断点。 我注意到,当我通过源代码GUI创建断点时,地址与我的模块的第一部分不同...

7得票1回答
在尝试为崩溃转储加载符号时,VS2010会显示“找不到匹配的二进制文件”。

为了测试目的,我正在使用Visual Studio 2010调试使用.dump /ma创建的minidump。我已经有了该转储文件的符号,但没有当前的二进制文件(它是一个可执行文件)。在VS2010中的模块窗口显示“找不到匹配的二进制文件”,这似乎是正确的,因为它不能在目标机器上的路径中找到它...

13得票5回答
Windbg:如何在C++函数的重载之一上设置断点?

我有一个 C++ 函数的两个重载版本,我想在其中一个上设置断点: 0:000> bu myexe!displayerror Matched: 00000000`ff3c6100 myexe!displayError (int, HRESULT, wchar_t *) Matched: ...

14得票2回答
WinDbg/SOS: !SyncBlk输出的解释

我正在寻找有关SOS的!SyncBlk命令生成的输出的描述。 特别是我没有找到有关“MonitorHeld”列的有用说明。此列在一系列崩溃转储中显示高值。 示例:0:000> !SyncBlk Index SyncBlock MonitorHeld Recursion...

10得票1回答
我能否在不连接VS调试器的情况下获取CLR异常的堆栈跟踪?

我有一个在远程服务器上运行的网站,想要从发生的异常中获取一些信息。由于无法安装VS或使用远程调试,我一直在尝试使用各种版本的WinDbg,但效果不佳。在我的本地测试中,我可以让WinDbg在C++异常或我抛出的CLR异常时中断程序执行,但无法得到更多的信息,只能知道“某些东西被抛出”。 是继...

10得票1回答
理解Windbg输出的调用堆栈

从Windbg中分析崩溃转储文件,使用clrstack获取到了以下堆栈的最后一个调用: 00000000`1eeee410 00000000`ffffffff mscorlib_ni!System.Threading.WaitHandle.WaitOne+0x23 ...