2013-02-26 74 views
0

在我的項目中,我無法追蹤項目發生的位置。 當我尋找到調用堆棧它給hirerchy作爲無法在C++中追蹤Visual Studio入口點

mfc100d.dll!_DllMainCRTStartup(void* hDllHandle, unsigned long dwReason, void *lpreserved) ntdll.dll!77328968()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] ntdll.dll!77335c11()
ntdll.dll!7733500a()
ntdll.dll!773335e9()

用該程序跳轉到 CWinApp::InitInstance()。 但是怎麼去!_DllMainCRTStartup對我來說是一件困難的事情。 我想從昨天開始,但我無法找到它。

注: 在設置:

Entry point is blank

No Entry: No

回答

1

可以加載微軟調試符號來解決[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll],看到了實際堆棧在兩個方面:

  1. 在通話組右鍵點擊一個條目,選擇Symbol Settings...,然後按Load Symbols from Microsoft symbols servers
  2. Tools -> Options -> Debugging -> Symbols將帶領您到同一個對話框,再次按下Load Symbols from Microsoft symbols servers

這至少應該解決的堆棧和顯示系統調用。

+0

感謝您的回覆。我做了同樣的事情,現在可以看到'mfc100d.dll!'_DllMainCRTStartup(void * hDllHandle,無符號長dwReason,void * lpreserved), [email protected]()+ 0x14字節,\t ntdll.dll !_LdrpRunInitializeRoutines @ 4()+ 0x385d字節,\t [email protected]() - 0x126a字節,\t NTDLL.DLL __ LdrpInitialize @ 8()+ 0x2afa字節,\t [email protected]( )+ 0x10字節' – 2013-02-26 09:33:44

+0

但是我仍然在努力尋找它從項目中調用的位置 – 2013-02-26 09:34:19

+0

LdrpInitialize被進程的主線程調用,該進程與您的dll鏈接以加載所有相關的庫,它被稱爲even WinMain()之前,所以你將無法看到什麼g更多,這是正確的。我不明白你到底想要達到什麼目的? – 2013-02-26 09:37:58

1

屬於主線程並且不會回到main()函數的堆棧跟蹤聽起來像是在向我構造全局對象(即,在頂層聲明)時發生錯誤。你可能想調查一下。

I.e. DllMainCRTStartup函數可能直接從您的C++運行時支持庫中調用。

相關問題