2013-08-27 56 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

这是我对我的问题的回答。这是相关的信息,可能有助于指导有同样问题的人。谢谢,无论谁敲了一个答案,并且不能发表评论。 –