在项目开发过程中,使用VS断点调试时经常会遇到"当前不会命中断点,还未为文档加载任何符号"、"当前不会命中断点,源代码与原始版本不同"的问题,如下图所示:
解决方案:
① 正确配置属性,主要包括:C++-->常规-->调试信息格式:程序数据库 (/Zi)、C++-->优化-->优化:已禁用 (/Od)、链接器-->调试-->生成调试信息:是 (/DEBUG)。禁用优化的目的在于调试过程中可实时监测变量。在属性配置时应注意PDB文件的生成位置,调试过程中必须有PDB文件;
② 程序的代码发生变化时,需要重新进行编译;
③ 调试静态库时,需要将静态库和相应的PDB文件发送至调用者,调用者(exe或dll)编译时也需要生成相应的PDB文件;在拿到调用者(dll或者exe)后,可选择使用"附加进程"的方式进行调试,也可以进行设置:"配置属性-->调试-->命令:exe或dll的路径",直接启动exe;注意如果调用者是dll,软件启动过程中依然会报错"当前不会命中断点"的错误,这时耐心等待即可,软件加载至此dll时,报错信息自然消失;
④ 调试某个解决方案下的多个工程时,可设置项目依赖项,右键点击解决方案的属性,对"通用属性-->项目依赖项"进行配置;
⑤ 有时会遇到各种配置均无错误,调试时依然报错,这是可更换高版本的VS,之前遇到一次使用VS2013无法调试,换上VS2019后问题解决;
远程调试的注意事项:
为便于调试,我们经常使用VS远程调试的方式,调试过程中应注意以下几点:
① 找到远程调试工具,一般位于:“C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Remote Debugger”目录下;
② 将"Remote Debugger"文件夹拷贝至目标机中,注意本机和目标机必须在同一个局域网内;
③ 使用管理员权限运行"msvsmon.exe",打开后进行正确配置,如下图所示:
④ 在目标机中附加进程,如下图所示: