一、结论
1. ”当前不会命中断点,因为还没有为该文档加载任何符号”才是要使断点命中的要点;
2. 方案1是前提,一定要确保DLL是最新的,头文件包含要同步一致;
3. 按第6条的第一步就解决问题了,其它实验后并无效果。
二、方案
1. https://blog.****.net/zhangbinsijifeng/article/details/46328393
(1).要调试的dll不在调试进程的进程空间,调不到,也就是该dll还没有被加载进exe内。即exe还没有使用到dll呢,当然不会加载该dll到exe的进程空间中
(2).exe调用的dll,不是dll源代码生成的最新的dll。一定要确保,exe调用的dll是dll源代码最新生成的dll。
不理解下面这段话中的“现有项目”和“一直在用的DLL” 的具体指代
“第一条out了。肯定是第二条。终于想起来了。我引用了三四个项目文件,有的项目文件没有引用“工程”上的现有项目,而是直接引用了一个一直在用的dll。把那个引用删除,然后改成引用到现有项目。”
2. https://blog.****.net/cokewei/article/details/50547557
环境:VS2015解决方案中有2个项目,一个项目是C++写的dll源代码,另一个是C#调用这个dll测试。
问题:C#调用dll无法在dll源代码中中断,提示“当前不会命中断点,因为还没有为该文档加载任何符号”
解决:
(1).首先设置dll和测试程序输出路径在同一个目录下
(2).其次设置
a 项目-〉属性-〉配置属性-〉C/C++-〉常规-〉调试信息格式,这里不能为“禁用”。
b项目-〉属性-〉配置属性-〉链接器-〉调试-〉生成调试信息,这里设为“是”。
最后很重要的一点:C#测试程序项目属性-〉调试->启用本机代码调试 打勾
希望对遇到相同问题的人有用。转载请注明出处
3. https://blog.****.net/madison_wang/article/details/52174876
把两个工程的配置属性中->调试:调试器类型由自动改为混合
4. https://blog.****.net/hnyzyty/article/details/46482077
首先,设置调试工作目录(把图1红框内的路径改为待调试的DLL所在的路径)
之后,切记要把待调试的项目重新生成一次!
5. https://blog.****.net/qq_22889875/article/details/79621534
在对C#调用的C++动态库打断点进行调试时,断点变为黄色感叹号,未进入断点,反复查找原因,重新生成的dll文件已经拷贝到C#相关目录下面,但还是无法进入断点,后来发现重新生成的动态库的pdb文件没有拷贝到C#相关目录下面,对动态库进行清理,重新生成解决方案,然后将新生成的dll和pdb同时拷贝到C#相关目录下,调试动态库,断点生效,问题解决。
(release文件夹下才有PDB,而debug模式下没有PDB,因此此方案未试验。)
6.https://blog.****.net/shakspers/article/details/78978017