在Visual Studio中有一种方法可以在通过GetModuleHandle + GetProcAddress调用的某个函数中设置断点吗?

时间:2013-05-15 15:53:33

标签: c++ visual-studio-2005

使用以下代码时,即使我将TheFST.dll与调试信息(/DEBUG)链接起来,我也无法在函数setSecurityRetriever中的断点处停止。

调用GetModuleHandle时,是否有原因导致VS无法加载.pdb?如果是正常的,我该如何更改行为以强制VS加载.pdb文件?

const string bondDataRetrieveDLLName("TheFST.dll");
HMODULE hMod = GetModuleHandle(bondDataRetrieveDLLName.c_str());
if(hMod)
{
    SecurityData bdrs = reinterpret_cast<SecurityData>(GetProcAddress(hMod, "setSecurityRetriever"));
    if(bdrs)
        bdrs(callback);
}

2 个答案:

答案 0 :(得分:1)

您可以使用DebugBreak()编程设置断点,如前所述。

如果您使用MSVC,也可以将__asm int 3放在您想要断点的位置。 它会在那条线上完全破裂。请记住之后将其删除。

答案 1 :(得分:1)

来自评论。

您是否使用/Zi编译了TheFST.dll中的代码文件?那里没有编译器选项/DEBUG/DEBUG是链接器选项