是否可以调试加载自定义加载程序的DLL?

时间:2013-11-29 08:14:56

标签: c++ c winapi windbg visual-studio-debugging

我有自己的LoadLibrary函数(MyLoadLibrary)实现它成功加载dll(foo.dll) - 执行重定位和解析符号。但是我无法在foo.dll中调试代码 - visual studio(和windbg)调试器无法识别foo.dll中的断点

我发现调试器可以处理DEBUG_EVENT结构,也许我可以为MyLoadLibrary生成这样的DEBUG_EVENT(LOAD_DLL_DEBUG_INFO)并将此事件发送给调试器?

我也找到了函数SymLoadModuleEx - 我可以设置我的dll的baseAddress和图像大小(因为我自己加载了foo.dll),我试图从debugee调用它,但它没有帮助,我认为必须从调试器调用此函数。

有没有办法获取foo.dll的源代码级调试?

1 个答案:

答案 0 :(得分:0)

我找到了类似的解决方案:我使用特殊标志:: DONT_RESOLVE_DLL_REFERENCES使用:: LoadLibraryEx执行库加载。当这个函数完成后,我已经在进程内存中加载并重新定位了dll图像,之后我以自己的方式手动解析所有dll导入,这样的方法也保留了源代码级别的调试。