首先直接列出问题及其解决方法:设置a.cpp:1234这样的断点后(断点位于.so文件中),gdb知道停在哪个函数,并能够停下来,但是无法显示源文件名及行号,也无法看到源码。明显是gdb有问题或者是调试信息有问题,我试遍了-g , -gstabs , -ggdb , -gstabs+参数,最终,-gstabs+参数可以和我的gdb完美配合,输出了我想要的东西,能够在debug的时候正确的看到函数名,行号,并能正确的看到源代码。这段话是在我解决问题之后添加在原文章之前的。供快速参考。

好了,现在来看一个一般性的问题:

有时候在用gdb调试程序的时候,发现gdb找不到源码。用list命令无效。

记住: gdb的调试信息中并不包含源码,只是包含了怎样去寻找源码,但是因为某种原因,比如你的源码转移了位置或者别的原因。你需要告诉gdb到哪里去寻找源码。这个通过directory命令来实现。

要查看当前gdb寻找源码的路径:

show directories

添加一个新的路径到查找路径:

dir  dirname

添加多个时,个dirname用: 分开。

详细见 : http://ftp.gnu.org/old-gnu/Manuals/gdb-5.1.1/html_node/gdb_48.html

另外:有时候发现调试信息不正确,或者没有调试信息,而gcc在编译的时候使用的参数为-g ,这时,可以个参数-g 该为-gstabs 就可以了。 我现在碰到的就是这种情况,具体原因还不是很清楚。

当利用-gstabs编译以后,程序在停下来的时候,会显示函数堆栈,每个栈会显示源文件以及行数,但是源代码还是列不出来,原因是directory还没有设好 。

后来发现-gstabs编译后,有些源码的位置被弄错了。继续尝试-gstabs+ , 最终才看到期望的效果。 需要后续的去了解下这几个参数之前的区别以及为什么要这么用。

GDB 找不到源代码相关推荐

  1. Eclipse Maven 依赖包找不到源代码及javadoc

    1. 问题描述 可以查看 jdk 源代码及对应的 javadoc 文件: 可以查看 maven 依赖包中 zookeeper 对应的源代码和 javadoc 文件: 但是新下载了 org.apache ...

  2. 用友nc65 uap开发找产品功能源代码

    用友nc65  uap开发找产品功能源代码 1.目标:在我们开发中,很多时候我们看到产品有的功能二开的时候需要使用相关功能,这个时候怎么去参考产品相关功能源代码呢?如我们需要收款结算录入节点的联查凭证 ...

  3. 解决Chrome 本地调试React,Sources下找不到源代码的问题

       首先先看一下,我在Sources下的代码情况,代码都是已经编译过的,导致我本地无法调试,之前一直都是可以调试的状态,忽然一下看不到源代码了,不能调试还是有点心慌. 解决方法:    后来仔细想了 ...

  4. 比较全面的gdb调试命令

    用GDB调试程序  GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序 列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行 软件的优势在于 ...

  5. 用GDB调试程序(转)

    用GDB调试程序 GDB概述 ---- GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做 ...

  6. GDB调试程序系列 (3)

    GDB调试程序系列 (3)  用GDB调试程序 来源:www.trucy.org (2005-03-23 16:48:14) GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成 ...

  7. Linux下的程序调试——GDB

    无论是多么优秀的程序员,都难以保证自己在编写代码时不会出现任何错误,因此调试是软件开发过程中的一个必不可少的 组成部分.当程序完成编译之后,它很可能无法正常运行,或者会彻底崩溃,或者不能实现预期的功能 ...

  8. linux下gdb单步调试

    用 GDB调试程序 GDB 概述 ---- GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 IDE的调试,但如果你是在 ...

  9. 用 GDB 调试Linux下的C程序

    查看程序出现段错误的语句,可以使用where命令,好像与bt命令相同. GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调 ...

最新文章

  1. Android超简单的进度条源码
  2. MySQL性能优化步骤
  3. flash AS3.0访问加载的SWF文件中的属性、方法以及类、库中的影片剪辑
  4. ASP.NET Core【在线教育系统】功能要求
  5. 编译程序基本原理的知识笔记
  6. 简单动态规划问题分析
  7. codeblock不能调试
  8. 2064: 分裂 - BZOJ
  9. linux gcc 示例_最好的Linux示例
  10. mysql 10天以前_MySQL前10天7天前
  11. linux存储格式化和挂载
  12. 前端命名规范_值得收藏的前端命名规范
  13. 计算机硬件各组成部分的工作原理,计算机硬件组成及工作原理
  14. tf.maximum
  15. Deployer-6-部署流-Flow
  16. 互联网创业公司的管理
  17. 用canvas画一个太极八卦图
  18. 赵小楼《天道》《遥远的救世主》深度解析(37)丁元英参加酒局前的小插曲:从冯世杰的刁难找茬说说“心是愿望,神是境界”
  19. java计算机毕业设计H5女娲宫旅游网站设计与实现MyBatis+系统+LW文档+源码+调试部署
  20. 华为手机助手安卓版_手机资料恢复助手app下载-手机资料恢复助手app安卓版下载v1.0...

热门文章

  1. 中国科学家发现侏罗纪时期带羽毛恐龙“飞行”新证据
  2. mpg,avi,wmv格式网页播放代码
  3. IPsec 配置干货,理论+配置
  4. 算法题,输出是父的元素以及其所有下属
  5. VC++ SYSTEMTIME转SQL SERVER日期时间
  6. HDU 2201 JAVA
  7. Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题
  8. chat集群聊天室项目 代码+讲解(二):业务模块
  9. android 11.0 去掉锁屏功能和息屏功能(永不息屏)
  10. OpenWRT下载与编译