2013-08-27 36 views
0

我可以[非常有用]通過放置一個DebugBreak(),然後附加到我的Visual Studio會話來調試我的DLL。但是,該DLL執行LoadLibrary()動態加載另一個DLL。該DLL按預期運行,但我似乎無法正確設置斷點。DebugBreak在另一個DLL下的DLL

當我在該第二個DLL中放置一個DebugBreak(),然後使用該項目附加到它時,我的VS會話總是跳轉到支持進程管理的Visual C++庫中的某個點,該函數似乎已經完成執行:

(crt0dat.c)

空隙__cdecl __crtExitProcess( INT狀態 ) { __crtCorExitProcess(狀態);

/* 
    * Either mscoree.dll isn't loaded, 
    * or CorExitProcess isn't exported from mscoree.dll, 
    * or CorExitProcess returned (should never happen). 
    * Just call ExitProcess. 
    */ 

    ExitProcess(status); 

}

可能是什麼回事?

回答

-1

在某個時候,事情開始奏效。事實證明,第二個DLL必須在第一個DLL的會話中進行調試,並且在長時間不工作後會自動開始。所需要的是第二個DLL中有一個DebugBreak()。

我知道我在某一點(作爲其他一些左場解決方案的一部分)做了「全部破解」,清理了一堆,並重新啓動了我的Visual Studio會話多次。我沒有解釋,除了建議您在LoadLibrary()之前的第一個DLL中始終有一個DebugBreak,並且在第二個DLL的頂部有一個。在第一個DLL中省略DebugBreak()可能會在第二個節點中破壞DebugBreak()。

+0

這是我對我的問題的回答。這是相關的信息,可能有助於指導有同樣問題的人。謝謝,無論誰敲了一個答案,並且不能發表評論。 –