1. 背景
在vs里,经常用c++编写dll供其它程序调用。由于dll不能直接运行,所以调试dll有些麻烦。
2. 解决方法
其实,dll也是程序。本质上,只要dll被其它程序调用了,就可以F5进行调试。
1)单元测试时调试dll。
这种情况,我们会写个单元测试程序,会生成exe。而单元测试里引用了dll。
如图,

方案useDll是测试用,这个时候,我们将useDll右键设为启动方案。
然后在mfcDll里需要打断点的位置设置断点,F5进入调试。
当测试程序执行到dll相应方法里,就会停在断点。
这种方法对于外部的exe同样有效。
只是这时,要在设为启动的方案里进行设置。
选择调试中的命令,command里填外部exe地址(例如,$(SolutionDir)/test.exe),目录里填exe所在的目录。然后F5调试即可。

2)dll被其他外部exe调用和本项目里某个方案生成的子exe同时调用时。
这里,外部exe会调用子exe。
这个时候,我们先运行主exe,子exe也会被启动。
然后点击调试中‘全部分离’, 再点击‘附加到进程’, 选择附加到子exe程序,
即可进入子exe的代码中。
博客介绍了在VS里用C++编写DLL供其他程序调用时的调试方法。因DLL不能直接运行,调试较麻烦。给出两种解决办法:一是单元测试时调试DLL,可设启动方案并打断点;二是DLL被外部和子exe同时调用时,先运行主exe,再附加到子exe进程进行调试。

被折叠的 条评论
为什么被折叠?



