visual-c++ - 什么是 msvcr80!_NLG_Return?

标签 visual-c++ windbg stack-trace crash-dumps msvcrt

我的崩溃转储之一中有以下调用堆栈:

ChildEBP RetAddr  Args to Child              
1ac5f400 74e68ed7 1ac5feb4 1ac5f6d8 1ac5f420 mfc80u!ATL::CSimpleStringT<wchar_t,1>::GetString (FPO: [0,0,0]) (CONV: thiscall) [f:\dd\vctools\vc7libs\ship\atlmfc\include\atlsimpstr.h @ 548]
1ac5fec0 6e8c818e 19850020 06b11c25 00000000 msvcr80!_NLG_Return (FPO: [Uses EBP] [3,0,4]) [F:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\eh\i386\lowhelpr.asm @ 73]
1ac5ff48 74e429bb 068be410 06b11cdd 00000000 mfc80u!_AfxThreadEntry+0xf2 (CONV: stdcall) [f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp @ 109]
1ac5ff80 74e42a47 00000000 76833677 18f8c190 msvcr80!_callthreadstartex+0x1b (FPO: [Non-Fpo]) (CONV: cdecl) [f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 348]
1ac5ff88 76833677 18f8c190 1ac5ffd4 77569f02 msvcr80!_threadstartex+0x66 (FPO: [1,0,4]) (CONV: stdcall) [f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
1ac5ff94 77569f02 18f8c190 4f59c6d6 00000000 kernel32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
1ac5ffd4 77569ed5 74e429e1 18f8c190 00000000 ntdll!__RtlUserThreadStart+0x70 (FPO: [Non-Fpo])
1ac5ffec 00000000 74e429e1 18f8c190 00000000 ntdll!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])

现在,从这个调用堆栈中可以清楚地看出,它是应用程序中以 AfxBeginThread 启动的线程之一:因此调用堆栈上有 _AfxThreadEntry 。查看VS2005安装文件夹中thrdcore.cpp的第109行,我还可以看到这是调用线程过程的行:

// C:\Program Files (x86)\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\thrdcore.cpp
107 if (pThread->m_pfnThreadProc != NULL)
108 {
109     nResult = (*pThread->m_pfnThreadProc)(pThread->m_pThreadParams);
110     ASSERT_VALID(pThread);
111 }

现在这一切看起来都不错,但是上面两行对我来说没有任何意义——好吧,字符串操作中出现了某种形式的崩溃... !analyze -v输出:

FAILURE_BUCKET_ID:  INVALID_POINTER_READ_c0000005_mfc80u.dll!ATL::CSimpleStringT_wchar_t,1_::GetString

BUCKET_ID:  APPLICATION_FAULT_INVALID_POINTER_READ_mfc80u!ATL::CSimpleStringT_wchar_t,1_::GetString+0

这看起来确实很可疑,因为查看这个函数似乎不会出现任何访问​​冲突。

仍然知道 msvcr80!_NLG_Return 是什么可能会帮助我更接近实际问题所在......?

最佳答案

这表明析构函数抛出了异常。 使用s-d esp l100000 1003f查找。

关于visual-c++ - 什么是 msvcr80!_NLG_Return?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006272/

相关文章:

c++ - WinDbg 和内联函数

javascript - 利用源映射的堆栈跟踪

go - 如何在运行时从给定调用中查找包名称?

c++ - 不是所有控制路径都返回值吗?

visual-c++ - OpenCV图像显示失败

visual-c++ - MS Visual Studio 10上的OpenCV:cv::cvtColor导致找不到入口点错误消息

c# - 使用 Windbg 的 !clrstack 命令调试死锁

javascript - 如何在 WinDbg 中引用不同脚本中定义的 JavaScript 函数?

ios6 - 堆栈跟踪方法名称已编辑

c++ - 如何从汇编代码中找出函数原型(prototype)?