使用以下代碼時,似乎即使將TheFST.dll
與調試信息(/DEBUG
)鏈接,我也無法在功能setSecurityRetriever
的斷點處停止。在Visual Studio中有一種方法可以在通過GetModuleHandle + GetProcAddress調用的某個函數中設置斷點?
當調用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);
}
你用'/ Zi'編譯過TheFST.dll中的代碼文件嗎?那裏沒有編譯器選項'/ DEBUG'。 '/ DEBUG'是一個鏈接器選項。 – user93353
傻我,你是對的/ Zi沒有啓用,讓我檢查並關閉這個問題,如果有效的話。 – BlueTrin
FWIW,使用LoadLibrary()和GetProcAddress()允許設置斷點或至少使用VC8逐步完成代碼。此外,如果VS仍然不合作,可以使用DebugBreak()觸發一箇中斷。 –