今天碰到一个问题,原来好好的DLL放到新项目下无法调试,断点加不上去,路径没问题,Event log显示module load:XXX.dll no debug info。但是各种编译开关都加了,折腾一上午,总算搜到下面这篇文章。特转载,感谢原作者分享。
原文地址:http://www.cnblogs.com/DxSoft/archive/2013/04/10/3011533.html
今天,整插件框架的时候,调试的时候,整来整去,发现,无法进入插件DLL进行调试,诧异的蛋疼,相同的框架,以前写的代码,调试一切正常,随意怎么调试 都可以,今天换一个项目上来,调试居然无法进入到DLL模块中去了。。。。寻找度娘,谷歌一番,多数论调都是神马DLL和exe同一个目录下之类的。甚至 还有人说放在不同的目录下之类的。。。。我不知道他们是怎么设置调试成功的,总之,我是怎么整都没成功,最后终于进入到主程序调试加载DLL插件的时候, 查看了一下Delphi自身的调试查看的Modules,这个可以在View-->Debug Windows--->Modules下查看。正常情况下,这里显示的界面为:
, 可以看到前面有蓝色小原点的是当前正在运行调试中的模块。然后可以看到在后面还跟有一个模块的路径。这个如果是英文名称,那么这个模块路径是正常的,如果 是中文名称,那么这个模块路径则是乱码,妹的,问题,才算是找出来了,这个就是因为Delphi的IDE无法识别正确的模块路径,而导致调试的时候无法正 常加载模块的调试信息。由此,咱们今后可要注意一下,就是如果使用插件的时候,切忌使用中文名称,否则是无法识别调试路径的咯。下面是使用中文路径的时 候,插件模块加载之后的模块视图如下
很 显然,只有SeBaidu.exe这个是蓝色点,而俺刚加载的那个插件则显示的是未加载,更奇特的是他后面的路径,看到没,一串乱码。真是蛋疼的 Delphi呵。居然宿主的中文路径识别正常,加载的插件中文路径,就识别不正常了!仅以为记,既然IDE有这种BUG,那咱们只有日后绕过了!