• gdb调试行号错位


    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

  • 相关阅读:
    Commander Nodejs 命令行接口
    数据库集群 ---续集
    数据库集群
    实时查看linux下的日志
    自动化测试
    python中list和dict
    super与this的用法
    数据类型
    父类调用子类方法
    子类调用父类方法
  • 原文地址:https://www.cnblogs.com/thammer/p/7435948.html
Copyright © 2020-2023  润新知