0

在尝试追踪被阻塞的互斥体时,调用堆栈似乎在等待互斥体时被截断。我没有看到正常的调用图,只有以下内容:

0 CpupSyscallStub wow64cpu 0x75132e09
1 Thunk0ArgReloadState wow64cpu 0x75132bf1
2 RunCpuSimulation wow64 0x751ad07e
3 Wow64LdrpInitialize wow64 0x751ac549
4 LdrpInitializeProcess ntdll 0x77984956
5 ::FNODOBFM::`string' ntdll 0x77981a17
6 LdrInitializeThunk ntdll 0x7796c32e

这阻碍了 QMutex,我正在使用来自 MSVC2008 的 CDB 与 Qt Creator 一起开发。我希望能够看到一个“正常”堆栈,这是一个直到 mutex.lock() 调用点的调用图。如果我不得不猜测,这将与在 64 位机器上调试 32 位应用程序有关。关于如何获得正确的调用堆栈的任何想法?

4

1 回答 1

0

这个链接简要地谈到了这个问题。Qt Windows 调试

这不是 Qt 或 Qt Creator 特定的问题。CDB.exe,Windows 命令行调试器(类似于 GDB),内置两个版本,32 位和 64 位。在 32 位 CDB 上调试 32 位应用程序时,应用程序堆栈看起来正常。在 64 位 CDB 上调试 32 位应用程序时,堆栈会被 32 位仿真器混淆。

于 2013-08-02T16:38:59.260 回答