DebugBreak在另一个DLL下的DLL中

时间:2013-08-27 20:33:58

标签: debugging visual-c++ dll visual-studio-debugging

我可以[非常有用]通过放置DebugBreak()然后附加到我的Visual Studio会话来调试我的DLL。但是,该DLL执行LoadLibrary()以动态加载另一个DLL。 DLL按预期运行,但我似乎无法正确设置断点。

当我在第二个DLL中放置一个DebugBreak()然后使用该项目附加到它时,我的VS会话总是跳转到支持进程管理的Visual C ++库中的某个点,此函数似乎已经完成执行:

(crt0dat.c)

void __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 个答案:

答案 0 :(得分:-1)

在某些时候,事情开始奏效了。事实证明,第二个DLL必须在第一个DLL的会话中进行调试,并且这在长时间不工作后自动开始。所需要的只是第二个DLL中有一个DebugBreak()。

我知道我在某一点上做了“全部破解”(作为其他一些左侧场解决方案的一部分),清理了很多次,并多次重新启动我的Visual Studio会话。我没有解释,除了建议你在LoadLibrary()之前的第一个DLL中总是有一个DebugBreak,而在第二个DLL的顶部有另一个。省略第一个DLL中的DebugBreak()可能会在第二个DLL中破坏DebugBreak()。