一.前言
今天调试程序的时候出现了一个烦人的问题,调用的DLL代码中出现问题,但是打断点一直无法进入断点,这问题整了一会还好发现了问题的原因,居然是因为我DLL工程生成的导入库lib的路径错了,程序调用的时候 是用的以前的导入库lib,dll是最新的,最后把新生成的导入库lib更新了一下,可以调试了。这种问题很容易忽略掉,出错时 一时半会也想不来是这里的问题。关于类似的程序无法进入断点的案例还挺多,下面是网上收集的以及自己躺过的一些坑。
二.程序代码之间调用,断点无法进入
1.清理解决方案或者项目,重新生成项目(pdb一类文件的更新)
2.vs项目下: 工具-->选项-->调试--->常规
可以把这个选项取消勾选以方便调试。
三.程序调用DLL,无法进入DLL源代码中的 断点
VC下Dll项目可被调试的工程基本设置
一个拥有源代码的dll项目需要设置以下几种属性才可以让生成的dll再被其他程序调用时,可以被调试。
1. 设置调试信息格式
2. 禁用优化
3. 生成调试信息
进行上述设置之后,编译得到的c++dll已经具备源代码调试能力。
其他几种影响dll调试的因素
1.清理解决方案或者项目,重新生成项目(pdb一类文件的更新)
2.DLL静态加载时,其导入库需要用到最新的,修改代码后,不要忘记使用最新的导入库lib以及dll,注意目录,因为这个lib很可能是以前的,而不是最新的
3.vs项目下: 工具-->选项-->调试--->常规
可以把这个选项取消勾选以方便调试。