1 将DLL工程设置为启动工程
(只有这样调试器才会挂接到DLL工程上)
2 右键单击DLL工程,选择属性(Properties)进入属性设置页面。在左边Congifure Properties下面选择Debugging
3 在右边Debuggers to launch选择Local Windows Debugger
4 在下面Command一览中点击右边的箭头,按浏览,之后选择会调用你代码的应用程序(选择Debug版本)
5 在Debugger Type里面选择Mixed
(这是最重要的一步,一般来说默认的Auto。但是是Auto不出来的。如果是托管代码调用你的DLL,比如一个C#应用程序调用DLL,那么你就选Managed Only,如果是一个本地代码掉用你的DLL,比如C++应用程序,那么就选Native Only。很明显Mixed包含了这两类,选择果断选Mixed)
6 从调用程序端启动调试(Debug),按F11即可进入到DLL源码(或者从被调试的dll端启动也能够正确的进入dll内部打的断点)
注:
1、需要将DLL源码生成的dll、pdb、exp拷贝至调用程序端运行程序目录下(目测只要pdb和dll就行了);
2、项目下的dll、lib、.h都同步更新。
如果从被调试的dll端启动无法进入断点
解决办法:
1. 进入DLL项目,在工程属性页中“Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择“用于“编辑并继续”的程序数据库(/ZI)”。
2. 在“配置属性”->“链接器”->“调试”->“生成调试信息”中,选择“是”。
编译重新更新,运行,断点生效
其他可能情况收集:来源于http://blog.csdn.NET/desow/archive/2009/11/20/4843556.aspx
参考博文: