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的代码中。