关于VS2010打不上断点问题

VS的可视化调试十分的方便,极大利于提高开发效率,但是有时候会遇到代码中无法启用断点问题。关于代码是否能够到达断点,一个很灵魂的问题就是:编译器是否能识别代码片段和是否能进入代码。只要满足这个条件,就不会存在打不上断点的情况。以下分析我工作中遇到的几种常见问题。

1.代码是否漏编译

最基础的,确保代码是否漏编译?如果其中部分代码漏编译,那么对于编译器那肯定是未知的。未知的肯定是不能打断点 的这无可厚非。只有满足我前面说到的两个条件,才能打断点。未知的代码段,编译器未到达过所有编译器提示,还未加载任何符号。

2.代码是否保存

确保1的前提下,如果开始代码是能调试的,但是代码改动后就不能调试了。很大一部分原因是我们在vs中编辑了代码。可能是编码格式或者代码未保存导致,这里建议使用vscode编辑代码再保存代码为UTF-8.再vs中打开重新生成一下,就又能调试并打断点了。

3.代码是否同源

可能从别人那里拷过来或者网上下载的代码,代码中某些字符(汉字等)乱码时,也可以用此方法解决乱码的问题,若不用此方法,则将代码保存为不乱码的格式,则又可以打断点了

工具->选项->调试下的“要求源文件与原始版本完全匹配“的钩去掉即可打断点了,如图:

4.代码与动态库调试时

代码中需要加载插件时,这个问题很容易被大多数人忽略。前面开始我提到两个条件:编译器是否能识别代码与编译器是否能找到代码。编译器编译过就是编译器提前走过代码,因此就能打断点。打个比方:只有你走过前面的所有路,所以你才能给路上的所有标志打上记号。走过所有的路,再重新回到起始位置,你才能知道所有路上的记号,因为你已经走过了。对于没有走过的路,那肯定是不能打断点的,所有我才说未知是不能打断点的。

因此这种情况:确保你的代码能够走到插件里面,也就是说你的代码确确实实是调用的插件。简单点说就是:插件的代码运行调试的同时启动的是又代码生成的插件。有时候我们的代码运行时,跟程序启动时运行的不是同一个插件,这就是代码与插件不同源。有的工程加载插件时是从配置文件去加载插件的,也许插件加载上了。我们调试代码时以为代码运行时就是调用的代码生成的插件,其实不然可能我们的程序并没有走由代码生成的插件,而是走的其他的插件。因此我们打不上断点是肯定的,因为我们的程序根本就没有执行到插件的代码中去。所以要解决这个问题就需要确保我们程序运行调用的插件是我们代码生成的插件保持一致,那就不存在打不上断点的情况了。

以上只是列举了一下我常遇到的一些问题。

总之基于我前面提到的两种条件,去具体问题具体分析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值