c++程序无法进入断点的原因

时间:2024-04-14 10:00:14

一.前言

今天调试程序的时候出现了一个烦人的问题,调用的DLL代码中出现问题,但是打断点一直无法进入断点,这问题整了一会还好发现了问题的原因,居然是因为我DLL工程生成的导入库lib的路径错了,程序调用的时候 是用的以前的导入库lib,dll是最新的,最后把新生成的导入库lib更新了一下,可以调试了。这种问题很容易忽略掉,出错时 一时半会也想不来是这里的问题。关于类似的程序无法进入断点的案例还挺多,下面是网上收集的以及自己躺过的一些坑。

 

二.程序代码之间调用,断点无法进入

1.清理解决方案或者项目,重新生成项目(pdb一类文件的更新)

 

2.vs项目下:  工具-->选项-->调试--->常规

可以把这个选项取消勾选以方便调试。

c++程序无法进入断点的原因

三.程序调用DLL,无法进入DLL源代码中的 断点

VC下Dll项目可被调试的工程基本设置

一个拥有源代码的dll项目需要设置以下几种属性才可以让生成的dll再被其他程序调用时,可以被调试。

1. 设置调试信息格式

c++程序无法进入断点的原因

2. 禁用优化

c++程序无法进入断点的原因

3. 生成调试信息

c++程序无法进入断点的原因
进行上述设置之后,编译得到的c++dll已经具备源代码调试能力。

其他几种影响dll调试的因素

1.清理解决方案或者项目,重新生成项目(pdb一类文件的更新)

2.DLL静态加载时,其导入库需要用到最新的,修改代码后,不要忘记使用最新的导入库lib以及dll,注意目录,因为这个lib很可能是以前的,而不是最新的

3.vs项目下:  工具-->选项-->调试--->常规

可以把这个选项取消勾选以方便调试。

c++程序无法进入断点的原因

 

参考文章:https://blog.****.net/HIVAN1/article/details/82622991

https://blog.****.net/desow/article/details/4843556