1. 宏调试

在GDB下,我们无法print宏定义,因为宏是预编译的。但是我们还是有办法来调试宏,这个需要GCC的配合。 
在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。
另外,你可以使用下述的GDB的宏调试命令 来查看相关的宏。
info macro – 你可以查看这个宏在哪些文件里被引用了,以及宏定义是什么样的。 macro – 你可以查看宏展开的样子。

2. 找不到源文件

太多的朋友都说找不到源文件。在这里我想提醒大家做下面的检查:
编译程序员是否加上了-g参数以包含debug信息。

路径是否设置正确了。使用GDB的directory命令来设置源文件的目录。

(gdb) list main
1192 ls.c: No such fileor directory.
inls.c
(gdb) directory ~/src/coreutils-7.4/src/
Source directories searched: /home/hchen/src/coreutils-7.4:$cdir:$cwd
(gdb) list main
1192 }
1193 }
1194
1195 int
1196 main (int argc, char **argv)
1197 {
1198 int i;
1199 struct pending *thispend;
1200 int n_files;

3. 条件断点

条件断点是语法是:break [where] if [condition],这种断点真是非常管用。尤其是在一个循环或递归中,或是要监视某个变量。注意,这个设置是在GDB中的,只不过每经过那个断点时GDB会帮你检查一下条件是否满足

4.命令行参数

有时候,我们需要调试的程序需要有命令行参数,很多朋友都不知道怎么设置调试的程序的命令行参数。其实,有两种方法:
  1.gdb命令行的 –args 参数 gdb环境中 set args命令。2.gdb的变量 
  有时候,在调试程序时,我们不单单只是查看运行时的变量,我们还可以直接设置程序中的变量,以模拟一些很难在测试中出现的情况,比较一些出错,或是switch的分支语句。使用set命令可以修改程序中的变量。
  另外,你知道gdb中也可以有变量吗?就像shell一样,gdb中的变量以$开头,比如你想打印一个数组中的个个元素,你可以这样:
  (gdb) set$i = 0
  (gdb) p a[$i++]
  ... #然后就一路回车下去了 
  当然,这里只是给一个示例,表示程序的变量和gdb的变量是可以交互的。

5. x命令

也许,你很喜欢用p命令。所以,当你不知道变量名的时候,你可能会手足无措,因为p命令总是需要一个变量名的。x命令是用来查看内存的,在gdb中 “help x” 你可以查看其帮助。
  x/x 以十六进制输出 x/d 以十进制输出 x/c 以单字符输出 x/i 反汇编 – 通常,我们会使用 x/10i $ip-20 来查看当前的汇编($ip是指令寄存器)x/s 以字符串输出

linux gdb调试问题汇总相关推荐

  1. linux子系统gdp调试,Linux GDB调试 详述

    今天来分享下gdb的简单调试,我这里写了个例子 三个.c文件 func1.c func2.c main.c 首先生成可调试的执行文件 gcc -g func1.c func2.c main.c -o ...

  2. Linux C : GDB调试命令汇总

    GDB 是GNU的一个交互式调试工具,可以调试C.C++ 和其他几种语言编写的程序 利用  gcc   -g   [源文件列表]  -o  [调试文件.x]  来生成调试文件 生成调试文件后   gd ...

  3. Linux GDB调试

    Linux 段错误调试 core 文件调试 编译时 加上 -g 使编译出的文件带 调试信息 gcc -g main.c -o main 使编译出的可执行文件带调试信息gdb main //对 main ...

  4. [Linux]gdb调试多进程多线程例程

    gdb相信学linux的同学已经比较熟悉了吧,它是linux下代码调试工具.我们在写c语言,c++的代码时经常会用到,它有一些常用的调试命令: run(r):运行程序,如果有断点在下一个断点处停止 s ...

  5. Linux gdb调试(4):多进程与多线程调试

    一,gdb的基础知识 1>介绍: gdb是Linux环境下的代码调试工具. 2>使用:需要在源代码生成的时候加上 -g 选项. 3>开始使用: gdb binFile 4>退出 ...

  6. Linux GDB调试死锁问题

    1. 死锁介绍 1.1 锁的简介 由于多线程的模式下,各个线程并发运行(注意"并发和"并行"的区别),为了保证各个线程对公共资源的访问时出现数据不一致性的问题,出现了锁的 ...

  7. Linux GDB调试完全教程

    转自 http://blog.csdn.net/gatieme 本文将主要介绍linux下的强大调试工具是怎么完成这些工作的. 之所以要调试程序,是因为程序的运行结果和预期结果不一致,或者程序出现运行 ...

  8. Linux gdb调试器

    gdb的启动 --gdb 程序名 [corefile] --corefile是可选的,但能增强gdb的调试能力 --强调:启动gdb必须在编译命里加上"-g"参数,"-g ...

  9. linux gdb检查函数栈,Linux - gdb调试

    调试 调试工具:gdb的使用 编译后版本 编译后的成果分为两个版本: debug版本:调试版本 -->程序员使用 release版本:最终发行版本 -->最终用户使用 gcc默认生成的是r ...

最新文章

  1. Python 函数学习
  2. 百度也出分享(百度分享)
  3. 【Python】 linecache模块读取文件
  4. 提升效率的JQUERY(转)
  5. 页面上有两个元素id相同,js中如何取值
  6. android lint工作机制,Android架构
  7. Monster Hunter(2020南京M)
  8. AngularJS中页面传参方法
  9. event.keyCode列表
  10. 全国计算机一级msoffice考试内容,2015年全国计算机一级MSOffice考试大纲
  11. PyTorch 1.4 最新版放出:支持Python2的最后一版,支持分布式模型并行、Java程序、移动端等多项新功能...
  12. python拆开tuple为多个值传入函数(tuple拆包)
  13. iPhone13最新外观售价曝光:好看还便宜
  14. openssh升级sftp_linux搭建sftp(openssh)
  15. SCSI硬盘设备到/dev/sd设备的映射关系
  16. LCD 1602学习
  17. android swstnw cn,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  18. TOGAF架构愿景阶段经常用到的3种经典分析模型
  19. HackTheGame 攻略 - 第一关
  20. 莫纳什大学计算机专业录取要求,2020年莫纳什大学计算机信息硕士申请条件

热门文章

  1. jlink、DAPLink、J-Link  OB资料整理
  2. redis-5.0.4集群部署
  3. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
  4. CSS中的路径裁剪样式clip-path
  5. Egret里用矢量挖圆形的洞
  6. Spring中property-placeholder的使用与解析
  7. tomact+apache实现web网页动静结合
  8. 细节之处方显linux真功夫
  9. QT 4.5 windows版本 安装问题 及 Junction 使用
  10. 我的简书两月记:数据可视化