Visual Studio 调试时代码错位问题

本文介绍了在使用Visual Studio进行代码调试时遇到的断点偏移问题及其解决方法。问题源于Visual Studio对换行符0D的误识别,导致源代码在程序执行时看起来发生了行偏移。文章提供了检查和修复此问题的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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中删除该行即可正常调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值