2

クラッシュ ダンプの 1 つに次のコール スタックがあります。

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])

さて、このコール スタックから明らかなことは、アプリケーション内の で開始されたスレッドの 1 つであった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 }

これですべて問題ないように見えますが、上記の 2 行は私には意味がありません。文字列操作で何らかの形式のクラッシュが発生しました ...!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実際の問題に近づくのに役立つかもしれないことをまだ知っている...?

4

1 に答える 1

2

これは、デストラクタからスローされた例外があることを示しています。で調べてくださいs-d esp l100000 1003f

于 2013-02-21T17:22:28.823 に答える