Debugging Visual Studio和WinDbg中的不同调用堆栈

Debugging Visual Studio和WinDbg中的不同调用堆栈,debugging,visual-studio-2013,windbg,debug-symbols,crash-dumps,Debugging,Visual Studio 2013,Windbg,Debug Symbols,Crash Dumps,在抛出异常时,会有一个应用程序的小型转储。它独立提供给Visual Studio 2013和WinDbg。这两个工具都配置为正确加载调试符号。实际上,除了主线程之外,所有线程的调用堆栈都显示为相同的 问题在于引发异常的主线程 Visual Studio 2013正确地将其显示为 KERNELBASE.dll!_RaiseException@16() + 0x58 bytes msvcr120.dll!_CxxThrowException(void * pExceptionObject,

在抛出异常时,会有一个应用程序的小型转储。它独立提供给Visual Studio 2013和WinDbg。这两个工具都配置为正确加载调试符号。实际上,除了主线程之外,所有线程的调用堆栈都显示为相同的

问题在于引发异常的主线程

Visual Studio 2013正确地将其显示为

KERNELBASE.dll!_RaiseException@16()  + 0x58 bytes   
msvcr120.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo)  Line 152 + 0x13 bytes   C++
AlignUtils.dll!genPresume(int i_line, const char * i_file, const char * i_expr)  Line 17 + 0x30 bytes   C++
FiPosShared.dll!FiPosShared_NS::InclinationFunction::fix(const Math_NS::RigidTransform<double> & toothXform, double targetAngle)  Line 68 + 0x1db bytes C++
FiPosShared.dll!FiPosShared_NS::InclinationFunction::dTorque_dInclination(const Math_NS::RigidTransform<double> & i_param, const Math_NS::RigidTransform<double> & i_base)  Line 88 + 0x33 bytes    C++
kernel32.dll!_HeapFree@12()  + 0x14 bytes   
msvcr120.dll!free(void * pBlock)  Line 51   C
00000005()  
...
您知道哪里出了问题,以及如何使WinDbg显示主线程的相同调用堆栈吗


谢谢

您必须首先使用
.ecxr
来获取和下一次运行类似的kP:


你能告诉我们你是如何加载这些符号的吗?是否
.reload/f
?如果运行.ecxr;kP?是的,我在WinDbg中尝试了
.reload/f
。结果与没有此命令时相同。您是如何获得堆栈的?@Thomas,在WinDbg中,我按下了“调用堆栈”按钮(Alt+6)。
!analyze-v
或者其他东西也应该显示一个好的堆栈,或者不是?这就解决了OP的问题,但出了什么错?@Thomas我不知道他是怎么得到这个堆栈的。我们不得不等待他对你的评论的答复
ntdll!NtGetContextThread+0x12
KERNELBASE!CloseHandle+0x2d
kernel32!CloseHandleImplementation+0x3f
dbghelp!Win32LiveSystemProvider::OpenMapping+0x1fe
0xd100000
ntdll!RtlpFreeHeap+0xbb1
ntdll!RtlFreeHeap+0x142
KERNELBASE!CloseHandle+0x2d
atiadlxy+0x10004
0x24548dc9
0x15ff6404
 .ecxr ; kP