linux gdb调试问题汇总
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调试问题汇总相关推荐
- linux子系统gdp调试,Linux GDB调试 详述
今天来分享下gdb的简单调试,我这里写了个例子 三个.c文件 func1.c func2.c main.c 首先生成可调试的执行文件 gcc -g func1.c func2.c main.c -o ...
- Linux C : GDB调试命令汇总
GDB 是GNU的一个交互式调试工具,可以调试C.C++ 和其他几种语言编写的程序 利用 gcc -g [源文件列表] -o [调试文件.x] 来生成调试文件 生成调试文件后 gd ...
- Linux GDB调试
Linux 段错误调试 core 文件调试 编译时 加上 -g 使编译出的文件带 调试信息 gcc -g main.c -o main 使编译出的可执行文件带调试信息gdb main //对 main ...
- [Linux]gdb调试多进程多线程例程
gdb相信学linux的同学已经比较熟悉了吧,它是linux下代码调试工具.我们在写c语言,c++的代码时经常会用到,它有一些常用的调试命令: run(r):运行程序,如果有断点在下一个断点处停止 s ...
- Linux gdb调试(4):多进程与多线程调试
一,gdb的基础知识 1>介绍: gdb是Linux环境下的代码调试工具. 2>使用:需要在源代码生成的时候加上 -g 选项. 3>开始使用: gdb binFile 4>退出 ...
- Linux GDB调试死锁问题
1. 死锁介绍 1.1 锁的简介 由于多线程的模式下,各个线程并发运行(注意"并发和"并行"的区别),为了保证各个线程对公共资源的访问时出现数据不一致性的问题,出现了锁的 ...
- Linux GDB调试完全教程
转自 http://blog.csdn.net/gatieme 本文将主要介绍linux下的强大调试工具是怎么完成这些工作的. 之所以要调试程序,是因为程序的运行结果和预期结果不一致,或者程序出现运行 ...
- Linux gdb调试器
gdb的启动 --gdb 程序名 [corefile] --corefile是可选的,但能增强gdb的调试能力 --强调:启动gdb必须在编译命里加上"-g"参数,"-g ...
- linux gdb检查函数栈,Linux - gdb调试
调试 调试工具:gdb的使用 编译后版本 编译后的成果分为两个版本: debug版本:调试版本 -->程序员使用 release版本:最终发行版本 -->最终用户使用 gcc默认生成的是r ...
最新文章
- Python 函数学习
- 百度也出分享(百度分享)
- 【Python】 linecache模块读取文件
- 提升效率的JQUERY(转)
- 页面上有两个元素id相同,js中如何取值
- android lint工作机制,Android架构
- Monster Hunter(2020南京M)
- AngularJS中页面传参方法
- event.keyCode列表
- 全国计算机一级msoffice考试内容,2015年全国计算机一级MSOffice考试大纲
- PyTorch 1.4 最新版放出:支持Python2的最后一版,支持分布式模型并行、Java程序、移动端等多项新功能...
- python拆开tuple为多个值传入函数(tuple拆包)
- iPhone13最新外观售价曝光:好看还便宜
- openssh升级sftp_linux搭建sftp(openssh)
- SCSI硬盘设备到/dev/sd设备的映射关系
- LCD 1602学习
- android swstnw cn,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
- TOGAF架构愿景阶段经常用到的3种经典分析模型
- HackTheGame 攻略 - 第一关
- 莫纳什大学计算机专业录取要求,2020年莫纳什大学计算机信息硕士申请条件