码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试行号错位

时间:2017-08-26 19:52:15      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:$@   传输   alt   调试   mat   编译   换行   格式转换   nbsp   

http://blog.csdn.net/wangxmin2005/article/details/8128192

gdb调试过程中出现行号错位的情况,原因一般有两个:

1. 编译器的优化可能把某些语句给优化掉了。

  解决这种情况很简单,makefile中-O2这类的编译优化去掉,换成最简单的g++ -g $^ -o $@ $(INCLUDES) $(LIBS)

2.文件格式转换问题。dos格式文件传输到unix系统时,会在每行的结尾多一个^M,造成文件格式混乱,换行错误,由此导致gdb调试中行号错误。

  dos,unix格式处理的差别:DOS是回车+换行,而在UNIX下,只有回车,无换行!

用脚本来判断文件是哪种格式:

file filname|grep -qv ^M && echo file is unix formart || echo file is dos formart

 

其他方式判断文件格式:vim打开

技术分享

这种有[dos]的为dos文件格式

技术分享

这种即unix文件格式

解决方式

   vim  dos.txt        
   :set fileformat=unix
    :w 

 

       这样文件就转换成unix格式文件了, 一般在windows机器上编写好了文件传到unix下就可能会出现这样的情况.
  用命令:set ff?
  可以看到dos或unix的字样. 
  用:set ff=unix把它强制为unix格式    
  也可以用sed 这样的工具来做:
  sed ‘s/^M//‘ filename > tmp_filename
  其中^M是同时Ctrl+V+M按出来的,表示回车。         

 

最简单的方式:dos2unix filename

gdb调试行号错位

标签:$@   传输   alt   调试   mat   编译   换行   格式转换   nbsp   

原文地址:http://www.cnblogs.com/thammer/p/7435948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!