Visual Studio 调试时代码错位问题

来源:互联网 发布:mac远程连接云服务器 编辑:程序博客网 时间:2024/05/20 23:04

今天同事在调试时发现某个文件调试时断点所进入的行并不是实际应该执行的行,所设的断点本来是函数头结果调试时进入断点,断点命中,根据临时变量窗口查出,该函数的几个临时变量已创建,说明实际程序已执行到程序内部,代码出现偏移,后通过以下链接中说明的方法尝试了下解决问题:

http://www.myexception.cn/vsts/403168.html

实际问题为Visual Studio将0D认为是换行,而真正编译好的程序需要0D 0A才认为是换行,所以源文件中以0D换行的在程序执行中看来还未换行,导致我们在Visual Studio看到代码偏移了一行了,当然如果源文件中存在多行0D换行,则会偏移多行。

而VisualStudio在编写代码时可能由回车或者添加注释时引入这种0D换行,如以下代码注释前

if(a > b){a = b;}

注释后每行中间平白无故多出了一行,这种行就是以0D换行的

//if(a > b)
//{
// a = b;
//}

检查源文件中有多少行以0D结尾可以通过其他文本编辑器打开该文件,然后通过该编辑器的行号与VisualStudio的行号比较便能找出0D问题所在位置。或者可以通过查看二进制来确定0D,然后只要将0D删除或直接在VS中删除该行即可正常调试。

原创粉丝点击