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调试行号错位的更多相关文章

  1. GDB调试器使用总结

    概述:GDB是linux下调试程序的神器,做为linux程序员,如果不能熟练的使用GDB进行程序调试,那将是很失败的事情.强大的功能使GDB的使用也变得比较复杂,如果是初学者肯定会比繁杂的命令吓到.下 ...

  2. GDB调试器

    /*this project used for gdb debug c programs*//*At first,using compile command turn out the executab ...

  3. gdb调试线程

    gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程. 注意gdb的版本要高于 ...

  4. gdb调试命令的使用及总结

    gdb调试命令的使用及总结 gdb是一个在UNIX环境下的命令行调试工具.如果需要使用gdb调试程序,请在gcc时加上-g选项.下面的命令部分是简化版,比如使用l代替list等等. 1.基本命令 命令 ...

  5. Lua中如何实现类似gdb的断点调试—06断点行号检查与自动修正

    前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性. 我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行.我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功 ...

  6. 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...

  7. 使用GDB命令行调试器调试C/C++程序

    原文:http://xmodulo.com/gdb-command-line-debugger.html作者: Adrien Brochard 没有调试器的情况下编写程序时最糟糕的状况是什么?编译时跪 ...

  8. Android调试技巧之Eclipse行号和Logcat

    很多初入Android的开发者可能会发现经常遇到Force Close或ANR这样的问题,一般我们通过Android系统的错误日志打印工具Logcat可以看到出错的内容,今天一起来说下如何通过 Ecl ...

  9. C语言 命令行参数 函数指针 gdb调试

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...

随机推荐

  1. 使用poi读取excel文件 Cannot get a text value from a numeric cell

    我这样转换得到一个excel文本域的值 Cell cell = row.getCell(c); cell.setCellType(Cell.CELL_TYPE_STRING); String park ...

  2. python查找目录及子目录下特定文件

    写这篇博客的缘由: 面试归来翻脉脉发现一个陌生的朋友提出一个面试题,设计实现遍历目录及子目录,抓取.pyc文件. 并贴出两种实现方法: 个人感觉,这两种方法中规中矩,不像是python的风格.pyth ...

  3. windows 开启 nginx 监听80 端口 以及 禁用 http 服务后,无法重启 HTTP 服务,提示 系统错误 123,文件目录、卷标出错

    1. 正常情况直接运行  start nginx.exe 不能开启成功,因为 80 端口被占用.提示: bind() to 0.0.0.0:80 failed (10013: An attempt w ...

  4. DbUtils: JDBC Utility Component Examples翻译

    DbUtils:JDBC实用组件实例 这一页提供了一些展示如何使用DbUtils的示例. 基本用法 DbUtils是一个非常小的类库,因此浏览完所有类的javadoc不会花费很长时间.DbUtils的 ...

  5. linux链路聚合

    配置聚合连接(网卡绑定,链路聚合): eth0 ================>>虚拟网卡team eth1 配置聚合连接 [root@Centos7-Server ~]# nmcli ...

  6. html5 手风琴菜单

    因为项目需要,现在需要做个手风琴菜单,于是自己就瞎整了一下,所用只是less.js  javascript  jquery效果如图: 具体代码如下: <!DOCTYPE html> < ...

  7. Mina 组件介绍之 IoBuffer

    在Java NIO 中,ByteBuffer通常作为通信中传递消息的载体.而在Mina中,采用了IoBuffer代替ByteBuffer.Mina给出了不用ByteBuffer的两个主要理由: 1.  ...

  8. cmd_menu.c

    #include <common.h>#include <config.h>#include <command.h> static char cmd_buf[200 ...

  9. QOS-CBQ概述

     QOS-CBQ概述 2018年7月7日    19:56 CBQ(基于类的对列)是一种基于QOS policy实现的拥塞管理技术. CBQ中包含一个LLQ(低延迟队列),用来支撑EF(快速转发)类业 ...

  10. hdu6370 并查集+dfs

    Werewolf Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...