GDB调试命令手册
GDB调试简易教程

GDB调试简易教程GDB(GNU调试器)是一个开源的调试工具,它用于调试C、C++和其他编程语言的程序。
它允许程序员在执行过程中观察程序的内部状态,帮助找到程序中的错误并进行修复。
下面是一个简易的GDB调试教程,以帮助你入门并学会使用它。
安装GDB首先,你需要在你的系统上安装GDB。
对于大多数Linux发行版,你可以通过在终端中运行以下命令来安装它:```sudo apt-get install gdb```编译程序在使用GDB之前,你需要编译你的程序,并在编译时使用-g选项,以便生成调试信息。
例如,对于C语言程序,你可以使用以下命令来编译:```gcc -g program.c -o program```这将生成一个可执行文件program,并在目录中生成调试信息。
启动GDB在终端中使用以下命令来启动GDB并调试你的程序:```gdb program```这将启动GDB,并且你将看到GDB的命令提示符。
设置断点断点是你在程序中指定的一个位置,当程序执行到该位置时会暂停。
你可以使用断点来观察程序在这一点的状态。
要设置断点,请在GDB的命令提示符下输入以下命令:```break line_number```line_number是你想要设置断点的源代码行号。
例如,要在程序的第10行设置断点,你可以使用以下命令:```break 10```或者你也可以使用函数名作为参数来设置断点:```break function_name```开始调试一旦设置好断点,你可以开始调试你的程序了。
要开始执行程序,请输入以下命令:```run```程序将开始运行直到第一个断点处。
此时,程序会停下来并且GDB会等待你的进一步命令。
观察变量在程序运行到断点处时,你可以使用以下命令来观察程序内部的变量值:```print variable_name```variable_name是你想要观察的变量的名称。
例如,要查看变量x的值,你可以使用以下命令:```print x```你还可以通过使用其他GDB命令来观察更多的变量信息,例如观察数组、结构体等。
gdb调试常用命令

8 9 10
删除所有断点 使断点无效 使断点有效
delete break
不需要参数
disable break <index> disable break 3:使序号为 3 的断点无效 enable break <index> enable break 3:使序号为 3 的断点有效 run:运行程序 run 12 34:带 12 和 34 两个参数运行程序 说明: run 12 34 等价于先执行 set args 12 34,然后执行 run print x:打印变量 x 的值 whatis x:打印变量 x 的类型 说明: ptype:比 whatis 的功能更强,他可以提供一个结构的定义 不需要参数 不需要参数 不需要参数 list <line1>显示程序第line1行的周围的源程序 list <line1,line2>显示第line1行到line2行之间的源代码 list <function> 显示函数名为function的函数的源程序 list 显示当前行4 15 16
打印变量值 打印变量类型 单步运行 (不进入) 单步运行(进入) 运行到断点
print <variable> whatis <variable> next step continue
17
显示源码
list
付春启 2011 年 2 月 23 日
2
gdb 调试常用命令
No. 1 功能 启动 gdb 程序 gdb 命令 用法举例(以调试程序 calc 为例) gdb:启动 gdb 调试程序 gdb ./calc:启动 gdb 调试程序,并载入 calc 文件中的符号列表 file ./calc:载入 calc 文件中的符号列表 2 载入文件符号表 打开或关闭源代码 窗口 设置程序运行参数 file <filename> 说明: gdb ./calc 等价于先执行 gdb,再执行 file ./calc 3 4 Ctrl+X+A set args 窗口切换快捷键 set args 12 34:设置程序运行参数为 12 和 34 两个参数 set args:取消先前所有参数设置 break 100:在第 100 行设置一个断点(单文件情况) break add:在 add 函数入口设置一个断点(单文件情况) 5 设置断点 break break main.cpp:100:在 main.cpp 文件的第 100 行设置一个断点(多文件 情况) break main.cpp:add :在 main.cpp 文件中的 add 函数入口设置一个断点( 多 文件情况) 6 7 查看断点信息 删除一个断点 info break delete break <index> 不需要参数 delete break 2:删除序号为 2 的断点
gdb使用手册

gdb使用手册摘要:1.GDB 简介2.GDB 的基本功能3.GDB 的安装与配置4.GDB 的基本使用方法5.GDB 的高级功能6.GDB 的常见问题与解答正文:【GDB 简介】GDB(GNU Debugger)是一款功能强大的调试工具,主要用于C/C++程序的调试。
GDB 可以帮助程序员查找代码中的错误,理解程序运行时的状态,并对程序进行性能分析。
GDB 作为GNU 计划的一部分,遵循GPL 协议,是开源的软件。
【GDB 的基本功能】GDB 主要包括以下基本功能:1.断点设置:可以在程序中设置断点,使程序在执行到断点时暂停。
2.运行控制:可以控制程序的运行,包括继续执行、单步执行、跳过函数调用等。
3.变量查看:可以查看程序运行时的变量值,包括全局变量、局部变量和栈上的临时变量。
4.函数调用栈查看:可以查看程序运行时的函数调用栈。
5.内存管理:可以分析程序的内存使用情况,查找内存泄漏等问题。
【GDB 的安装与配置】GDB 的安装相对简单,一般可以通过操作系统的包管理器进行安装。
以Ubuntu 系统为例,可以使用以下命令安装GDB:```sudo apt-get install gdb```安装完成后,需要配置GDB 的环境变量,将GDB 的安装路径添加到PATH 环境变量中。
具体操作如下:```export PATH=$PATH:/usr/local/gdb```【GDB 的基本使用方法】GDB 的基本使用方法如下:1.启动GDB:在终端中输入“gdb”命令,然后回车。
2.载入程序:使用“file”命令载入需要调试的程序。
例如:“file/path/to/your/program”。
3.设置断点:使用“break”命令在指定位置设置断点。
例如:“break main”。
4.运行程序:使用“run”命令开始运行程序。
此时,程序会在设置断点的位置暂停。
5.查看变量:使用“print”命令查看变量值。
gdb调试手册

GDB调试器使用手册使用GDB:本文描述GDB,GNU的原代码调试器。
(这是4.12版1994年一月,GDB版本4。
16)* 目录:* 摘要: GDB的摘要* 实例:一个使用实例* 入门:进入和退出GDB* 命令: GDB 的命令* 运行:在GDB下运行程序* 停止:暂停和继续执行* 栈:检查堆栈* 原文件:检查原文件* 数据:检查数据* 语言:用不同的语言来使用GDB* 符号:检查符号表* 更改:更改执行* GDB的文件文件* 对象指定调试对象* 控制GDB 控制* 执行序列:执行一序列命令* Emacs: 使GDB和Emacs一起工作* GDB的bug:* 命令行编辑:行编辑* 使用历史记录交互:* 格式化文档:如何格式化和打印GDB文档* 索引:GDB简介:**************调试器(比如象GDB)能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。
GDB主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序中的错误。
* 运行你的程序,设置所有的能影响程序运行的东西。
* 保证你的程序在指定的条件下停止。
* 当你程序停止时,让你检查发生了什么。
* 改变你的程序。
那样你可以试着修正某个bug引起的问题,然后继续查找另一个bug.你可以用GDB来调试C和C++写的程序。
(参考 *C 和C++)调试Pascal程序时,有一些功能还不能使用。
GDB还可以用来调试FORTRAN程序,尽管现在还不支持表达式的输入,输出变量,或类FORTRAN的词法。
* GDB是"free software",大家都可以免费拷贝。
也可以为GDB增加新的功能,不过可要遵守GNU的许可协议幺。
反正我认为GNU还是比较不错的:-)就这句话:Fundamentally, the General Public License is a license which says that you have these freedoms and that you cannot take these freedoms away from anyone else.GDB的作者:Richard Stallman是GDB的始作俑者,另外还有许多别的GNU的成员。
GDB 命令参考手册

info proc all
显示上面proc命令这些命令返回的所有信息
quit
q
退出调试程式
frame
shell
shell ls
执行shell命令
make
不退出gdb而重新编译生成可执行文件
disassemble
显示反汇编代码
thread
thread thread_no
用来在线程之间的转换
set
set width 70
就是把标准屏幕设为70列
set var=54
设置变量的值。
forward/search
search string
从当前行向后查找匹配某个字符串的程式行
reverse-search
forward/search相反,向前查找字符串。使用格式同上
up/down
上移/下移栈帧,使另一函数成为当前函数
暂停,步进时自动显示表达式的值
finish
执行直到函数返回 执行直到当前stack返回数返回
where
命令用来查看执行的代码在什么地方中止
backtrace
bt
显示函数调用得所有栈框架(stack frames)的 踪迹和当前函数的参数的值。
watch
w
w exp
监视表达式的值
kill
k
k
结束当前调试的程式
p
p exp
打印表达式的值
p/fmt exp
fmt为以下值
gdb使用手册

gdb使用手册摘要:一、GDB 简介1.GDB 的定义2.GDB 的作用二、GDB 的安装与配置1.安装GDB2.配置GDB三、GDB 的基本使用1.启动GDB2.调试程序3.控制程序执行4.查看程序状态四、GDB 的高级功能1.断点调试2.单步执行3.查看变量值4.修改变量值5.控制台输出6.退出GDB正文:GDB(GNU Debugger)是一个用于调试程序的强大工具。
它支持C、C++等语言,可以通过命令行或图形界面进行操作。
GDB 可以帮助程序员找到程序中的错误,并能够对程序进行调试、测试和优化。
一、GDB 简介GDB 是一个功能强大的调试器,主要用于调试C、C++等语言编写的程序。
它可以让程序员在程序运行过程中观察程序的内部状态,设置断点,单步执行代码等,以便找到程序中的错误。
二、GDB 的安装与配置1.安装GDB:GDB 通常与编译器一起安装,例如,使用GCC 编译器时,可以通过以下命令安装GDB:`sudo apt-get install gdb`。
2.配置GDB:在使用GDB 之前,可能需要对GDB 进行一些配置,例如设置编译器的路径、添加新的调试符号等。
可以使用`gdb-config`命令进行配置。
三、GDB 的基本使用1.启动GDB:使用`gdb`命令启动GDB,并指定要调试的程序。
例如:`gdb my_program`。
2.调试程序:在GDB 中,可以使用`run`命令开始运行程序。
程序将暂停在第一个断点处,此时可以查看程序的状态,例如变量值、内存地址等。
3.控制程序执行:在GDB 中,可以使用`next`、`step`、`continue`等命令控制程序的执行。
`next`命令会执行当前行的下一行代码,`step`命令会执行当前行的所有代码,`continue`命令会继续执行程序,直到遇到断点或程序结束。
4.查看程序状态:在GDB 中,可以使用`print`、`display`、`backtrace`等命令查看程序的状态。
gdb常用调试命令

gdb常用调试命令
1. run: 用于开始程序调试
2. break: 用于设置断点,可以是源代码的行号、函数名或地址
3. clear: 用于清除断点,可以是源代码的行号、函数名或地址
4. continue: 用于让程序继续执行,直到遇到断点
5. stepi: 单步运行,每次运行一条汇编指令
6. step: 单步运行,每次运行一行C源代码
7. nexti: 运行至次汇编指令,不进入函数内部
8. next: 运行至次行C源代码,不进入函数内部
9. jump: 任意跳转到某行源代码运行
10. until: 从断点处运行到某行源代码,不包括该行
11. finish: 运行到当前函数的返回处
12. info breakpoints: 显示所有的断点
13. delete: 删除断点
14. watch: 设置变量的某种变化条件
15. list: 显示源代码
16. disassemble: 反汇编指令
17. x: 以十六进制及字符串查看内存值
18. print: 打印数据、表达式及变量
19. set: 设置变量值
20. backtrace: 显示堆栈调用过程。
gdb使用手册

gdb使用手册(原创版)目录1.GDB 简介2.GDB 基本功能3.GDB 使用流程4.GDB 常见命令5.GDB 高级特性6.GDB 未来发展正文1.GDB 简介GDB(GNU Debugger)是一款功能强大的调试工具,主要用于 C/C++程序的调试。
GDB 提供了丰富的调试功能,可以帮助程序员定位问题、分析程序运行状态,从而有效地提高软件质量和开发效率。
2.GDB 基本功能GDB 的基本功能包括:设置断点、单步执行、步进执行、查看变量值、运行时查看内存信息、调试线程等。
通过这些功能,程序员可以深入了解程序运行过程中的各种信息,找出潜在的问题。
3.GDB 使用流程GDB 的使用流程主要包括以下几个步骤:(1)启动 GDB:使用“gdb”命令启动 GDB,然后载入需要调试的程序。
(2)设置断点:在需要设置断点的代码位置使用“break”命令。
(3)运行程序:使用“run”命令开始运行程序。
(4)调试过程:根据需要使用 GDB 提供的命令,如“next”、“step”、“continue”等,控制程序的执行流程。
(5)退出 GDB:调试完成后,使用“quit”命令退出 GDB。
4.GDB 常见命令GDB 提供了众多命令以满足不同调试需求,以下是一些常见的 GDB命令:(1)设置断点:break、break-set-file、break-set-function。
(2)控制程序执行:run、continue、step、next、step-over、step-into、step-out。
(3)查看程序状态:print、display、list、backtrace。
(4)操作内存:malloc、free、print-memory-usage。
(5)调试线程:thread-create、thread-join、thread-switch。
5.GDB 高级特性GDB 还提供了一些高级特性,如:(1)远程调试:通过远程调试,程序员可以在一台机器上调试另一台机器上的程序。
gdb调试教程

gdb调试教程GDB调试教程GDB(GNU调试器)是一个用于调试程序的强大工具。
它可以用于查找程序中的错误、跟踪程序的执行过程、观察程序的变量和内存、以及进行程序的优化等。
本教程将介绍如何使用GDB进行程序调试。
1. 启动GDB要启动GDB,只需在终端中键入“gdb”命令,然后在空格后输入需要调试的可执行文件的名称。
例如:```$ gdb my_program```2. 设置断点断点是在程序中设置的一个标记,用于指示GDB在此处停止程序的执行。
要设置断点,请在GDB提示符后输入“break”命令,后跟要设置断点的代码行或函数的名称。
例如:```(gdb) break main.cpp:10```3. 运行程序在设置完断点后,可以使用“run”命令来运行程序。
例如:```(gdb) run```程序将开始执行,并在达到断点处时暂停。
4. 调试命令在程序暂停执行时,可以使用各种GDB命令来检查程序的状态。
以下是一些常用的命令:- `list`:显示当前执行点周围的源代码。
- `print`:打印程序中的变量值。
- `step`:执行当前行,并进入任何调用的函数。
如果当前行有多个函数调用,GDB将进入第一个调用的函数。
- `next`:执行当前行,但不进入任何调用的函数。
如果当前行有多个函数调用,GDB将仅执行当前行并跳过后续的函数调用。
- `continue`:继续程序的执行,直到下一个断点或程序结束。
5. 查看堆栈使用“backtrace”命令可以查看程序运行时的函数调用堆栈。
这将显示调用堆栈的所有函数和相应的行号。
```(gdb) backtrace```6. 跟踪变量和内存GDB还可以让你查看程序的变量和内存。
使用“print”命令可以在程序暂停时查看变量的值。
例如:```(gdb) print my_variable```要查看内存中的内容,可以使用“x”命令。
例如,要查看内存位置0x100的内容:```(gdb) x /x 0x100```7. 结束调试会话要结束GDB调试会话,可以使用“quit”命令。
gdb 常用指令

gdb 常用指令GDB是GNU调试器的缩写,是一种功能强大的调试工具。
它可以帮助开发人员找到程序中的错误并进行修复。
在本文中,我们将讨论GDB的常用指令。
一、启动GDB要启动GDB,可以使用以下命令:```gdb <program>```其中,`<program>`是要调试的程序的名称。
二、设置断点设置断点是调试过程中最常用的操作之一。
断点允许您在程序执行到指定位置时停止程序,并查看当前状态。
以下是设置断点的常用命令:1. `break`:设置断点```break <location>```其中,`<location>`可以是函数名、行号或文件名。
2. `delete`:删除断点```delete <breakpoint_number>```其中,`<breakpoint_number>`是要删除的断点编号。
3. `disable`:禁用断点```disable <breakpoint_number>```其中,`<breakpoint_number>`是要禁用的断点编号。
4. `enable`:启用禁用的断点```enable <breakpoint_number>```其中,`<breakpoint_number>`是要启用的断点编号。
5. `info breakpoints`:显示所有已设置的断点```info breakpoints```三、运行程序运行程序时,可以使用以下命令:1. `run`:运行程序```run```2. `continue`:继续执行程序```continue```3. `next`:执行下一行代码```next```4. `step`:进入函数并执行下一行代码```step```四、查看变量和内存在调试过程中,查看变量和内存的值非常重要。
以下是GDB中常用的命令:1. `print`:查看变量的值```print <variable>```其中,`<variable>`是要查看的变量名。
gdb编译和调试命令

编译和调试是软件开发过程中的重要步骤,尤其是在使用GDB (GNU调试器)时。
以下是一些基本的GDB编译和调试命令:1.编译:2.1.使用gcc编译器进行编译。
例如,如果你有一个名为main.c的源文件,你可以使用以下命令进行编译:复制代码`gcc -g main.c -o main`1.-g选项告诉编译器生成调试信息。
3.启动GDB并加载程序:4.1.使用GDB启动程序:复制代码`gdb ./main`5.设置断点:6.1.在函数或代码行上设置断点,以便在程序执行到该点时停止:复制代码css`break main.c:10`7.运行程序:8.1.使用run命令启动程序:复制代码`run`9.查看变量值:10.1.在程序暂停时,使用print命令查看变量的值:复制代码`print variable_name`11.步进:12.1.执行下一行代码:复制代码css`next`或`n`1.进入函数或子例程:复制代码css`step`或`s`13.跳过函数:14.1.跳过当前函数并执行下一行代码:复制代码css`finish`或`f`15.继续执行直到下一个断点:16.1.使用continue或c命令。
如果你想在到达断点之前停止程序,可以使用until命令。
17.查看调用栈:18.•使用where或简写的w命令查看调用栈。
这显示了当前位置的函数调用序列。
1.退出GDB:使用quit命令退出GDB。
也可以使用简写形式q。
2.查看源代码:在GDB中,可以使用list命令(简写为l)查看当前行的前后代码。
也可以使用文件名和行号来查看特定代码的上下文。
例如,要查看main.c文件的第10行代码,可以使用以下命令:kotlin复制代码list main.c:10。
gdb调试命令的使用及总结

gdb调试命令的使用及总结gdb是一种功能强大的调试工具,用于帮助开发人员诊断和解决程序中的错误。
通过使用gdb,开发人员可以检查程序的内部状态、变量的值以及程序的执行流程,从而更好地理解程序的行为并找到问题所在。
在使用gdb进行调试时,有一些常用的命令可以帮助我们进行调试。
下面是一些常用的gdb调试命令及其使用方法的总结。
1. 启动程序:可以使用gdb命令后跟可执行程序的路径来启动程序。
例如:gdb ./program。
2. 设置断点:可以使用break命令来设置断点。
例如:break main 可以在程序的main函数处设置断点。
3. 运行程序:可以使用run命令来运行程序。
例如:run可以开始执行程序。
4. 单步执行:可以使用step命令来逐行执行程序。
例如:step可以执行当前行并进入函数。
5. 继续执行:可以使用continue命令来继续执行程序。
例如:continue可以继续执行程序直到下一个断点。
6. 打印变量的值:可以使用print命令来打印变量的值。
例如:print variable可以打印变量的值。
7. 查看函数调用栈:可以使用backtrace命令来查看函数调用栈。
例如:backtrace可以显示当前函数的调用栈。
8. 修改变量的值:可以使用set命令来修改变量的值。
例如:set variable = value可以修改变量的值。
9. 查看内存内容:可以使用x命令来查看内存的内容。
例如:x /nfu address可以以指定格式查看指定地址的内存内容。
10. 查看寄存器的值:可以使用info registers命令来查看寄存器的值。
例如:info registers可以显示当前寄存器的值。
11. 跟踪程序执行时间:可以使用set pagination off命令来关闭分页显示功能。
例如:set pagination off可以关闭分页显示。
总结:gdb是一种强大的调试工具,可以帮助开发人员定位和解决程序中的错误。
gdb调试工具常用命令

gdb调试⼯具常⽤命令编译程序时需要加上-g,之后才能⽤gdb进⾏调试:gcc -g main.c -o maingdb中命令:回车键:重复上⼀命令(gdb)help:查看命令帮助,具体命令查询在gdb中输⼊help + 命令,简写h(gdb)run:重新开始运⾏⽂件(run-text:加载⽂本⽂件,run-bin:加载⼆进制⽂件),简写r (gdb)start:单步执⾏,运⾏程序,停在第⼀执⾏语句(gdb)list:查看原代码(list-n,从第n⾏开始查看代码。
list+ 函数名:查看具体函数),简写l (gdb)set:设置变量的值(gdb)next:单步调试(逐过程,函数直接执⾏),简写n(gdb)step:单步调试(逐语句:跳⼊⾃定义函数内部执⾏),简写s(gdb)backtrace:查看函数的调⽤的栈帧和层级关系,简写bt(gdb)frame:切换函数的栈帧,简写f(gdb)info:查看函数内部局部变量的数值,简写i(gdb)finish:结束当前函数,返回到函数调⽤点(gdb)continue:继续运⾏,简写c(gdb)print:打印值及地址,简写p(gdb)quit:退出gdb,简写q(gdb)break+num:在第num⾏设置断点,简写b(gdb)info breakpoints:查看当前设置的所有断点(gdb)delete breakpoints num:删除第num个断点,简写d(gdb)display:追踪查看具体变量值(gdb)undisplay:取消追踪观察变量(gdb)watch:被设置观察点的变量发⽣修改时,打印显⽰(gdb)i watch:显⽰观察点(gdb)enable breakpoints:启⽤断点(gdb)disable breakpoints:禁⽤断点(gdb)x:查看内存x/20xw 显⽰20个单元,16进制,4字节每单元(gdb)run argv[1] argv[2]:调试时命令⾏传参(gdb)set follow-fork-mode child#Makefile项⽬管理:选择跟踪⽗⼦进程(fork())core⽂件:先⽤$ ulimit -c 1024 开启core,当程序出错会⾃动⽣成core⽂件。
GDB调试命令手册.

常用的 gdb 命令backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where breakpoint 在程序中设置一个断点cd 改变当前工作目录clear 删除刚才停止处的断点commands 命中断点时,列出将要执行的命令continue 从断点开始继续执行delete 删除一个断点或监测点;也可与其他命令一起使用display 程序停止时显示变量和表达时down 下移栈帧,使得另一个函数成为当前函数frame 选择下一条 continue 命令的帧info 显示与该程序有关的各种信息jump 在源程序中的另一点开始运行kill 异常终止在 gdb 控制下运行的程序list 列出相应于正在执行的程序的原文件内容next 执行下一个源程序行,从而执行其整体中的一个函数print 显示变量或表达式的值pwd 显示当前工作目录pype 显示一个数据结构 (如一个结构或 C++类的内容quit 退出 gdbreverse-search 在源文件中反向搜索正规表达式run 执行该程序search 在源文件中搜索正规表达式set variable 给变量赋值signal 将一个信号发送到正在运行的进程step 执行下一个源程序行, 必要时进入下一个函数undisplay display 命令的反命令, 不要显示表达式until 结束当前循环up 上移栈帧,使另一函数成为当前函数watch 在程序中设置一个监测点(即数据断点whatis 显示变量或函数类型GDB 命令分类详解一:列文件清单 ........................................................................................................................................... .. (2)二 :执行程序 ........................................................................................................................................... (2)三 :显示数据 ........................................................................................................................................... (2)四 :断点(breakpoint ............................................................................................................................ . (3)五. 断点的管理 ........................................................................................................................................... .. (3)六. 变量的检查和赋值 (4)七.单步执行 ........................................................................................................................................... (4)八. 函数的调用 ........................................................................................................................................... .. (4)九.机器语言工具 ........................................................................................................................................... .4十. 信号 ........................................................................................................................................... ................4 十一 . 原文件的搜索 ........................................................................................................................................... .5 十二 . UNIX接口 ........................................................................................................................................... ....5 十三 . 命令的历史 ........................................................................................................................................... ..5 十四 . GDB 帮助 ........................................................................................................................................... ...5 十五 . GDB 多线程 ..........................................................................................................................................6 十六 . GDB 使用范例 (7)一:列文件清单1. List(gdb list line1,line2二:执行程序要想运行准备调试的程序,可使用 run 命令,在它后面可以跟随发给该程序的任何参数, 包括标准输入和标准输出说明符 (<和 >和外壳通配符 (*、?、[、 ]在内。
gdb调试命令

gdb调试命令 gdb是⼀个在UNIX环境下的命令⾏调试⼯具。
如果需要使⽤gdb调试程序,请在gcc时加上-g选项。
下⾯的命令部分是简化版,⽐如使⽤l代替list等等。
1.基本命令1)进⼊GDB #gdb test test是要调试的程序,由gcc test.c -g -o test⽣成。
进⼊后提⽰符变为(gdb) 。
2)查看源码 (gdb) l 源码会进⾏⾏号提⽰。
如果需要查看在其他⽂件中定义的函数,在l后加上函数名即可定位到这个函数的定义及查看附近的其他源码。
或者:使⽤断点或单步运⾏,到某个函数处使⽤s进⼊这个函数。
3)设置断点 (gdb) b 6 这样会在运⾏到源码第6⾏时停⽌,可以查看变量的值、堆栈情况等;这个⾏号是gdb的⾏号。
4)查看断点处情况 (gdb) info b 可以键⼊"info b"来查看断点处情况,可以设置多个断点;5)运⾏代码 (gdb) r6)显⽰变量值 (gdb) p n 在程序暂停时,键⼊"p 变量名"(print)即可; GDB在显⽰变量值时都会在对应值之前加上"$N"标记,它是当前变量值的引⽤标记,以后若想再次引⽤此变量,就可以直接写作"$N",⽽⽆需写冗长的变量名;7)观察变量 (gdb) watch n在某⼀循环处,往往希望能够观察⼀个变量的变化情况,这时就可以键⼊命令"watch"来观察变量的变化情况,GDB在"n"设置了观察点;8)单步运⾏ (gdb) n9)程序继续运⾏ (gdb) c 使程序继续往下运⾏,直到再次遇到断点或程序结束;10)退出GDB (gdb) q2.断点调试命令格式 例⼦ 作⽤break + 设置断点的⾏号 break n 在n⾏处设置断点tbreak + ⾏号或函数名 tbreak n/func 设置临时断点,到达后被⾃动删除break + filename + ⾏号 break main.c:10 ⽤于在指定⽂件对应⾏设置断点break + <0x...> break 0x3400a ⽤于在内存某⼀位置处暂停break + ⾏号 + if + 条件 break 10 if i==3 ⽤于设置条件断点,在循环中使⽤⾮常⽅便info breakpoints/watchpoints [n] info break n表⽰断点号,查看断点/观察点的情况clear + 要清除的断点⾏号 clear 10 ⽤于清除对应⾏的断点,要给出断点的⾏号,清除时GDB会给出提⽰delete + 要清除的断点编号 delete 3 ⽤于清除断点和⾃动显⽰的表达式的命令,要给出断点的编号,清除时GDB不会给出任何提⽰disable/enable + 断点编号 disable 3 让所设断点暂时失效/使能,如果要让多个编号处的断点失效/使能,可将编号之间⽤空格隔开awatch/watch + 变量 awatch/watch i 设置⼀个观察点,当变量被读出或写⼊时程序被暂停rwatch + 变量 rwatch i 设置⼀个观察点,当变量被读出时,程序被暂停catch 设置捕捉点来补捉程序运⾏时的⼀些事件。
gdb使用手册

gdb使用手册摘要:1.GDB 简介2.GDB 的基本组成3.GDB 的使用方法4.GDB 的高级功能5.总结正文:1.GDB 简介GDB(GNU Debugger)是一款强大的调试工具,主要用于C/C++程序的调试。
GDB 可以帮助程序员查找代码中的错误,理解程序的执行过程,并对程序进行性能分析。
2.GDB 的基本组成GDB 主要由以下几个部分组成:(1)调试器:GDB 的核心部分,用于控制调试过程。
(2)服务器:负责与被调试程序进行通信,收集运行时的信息。
(3)命令:GDB 提供了丰富的命令,用于控制调试过程,如设置断点、单步执行、查看变量值等。
(4)调试脚本:记录调试过程中的操作,可以自动化执行一系列命令。
3.GDB 的使用方法使用GDB 进行调试的基本步骤如下:(1)启动GDB:在终端中输入“gdb”并回车,进入GDB 界面。
(2)载入程序:使用“file”命令载入需要调试的程序。
(3)设置断点:使用“break”命令在指定位置设置断点。
(4)运行程序:使用“run”命令开始执行程序。
(5)单步执行:使用“next”或“step”命令让程序执行到下一个断点或执行当前行的代码。
(6)查看变量值:使用“print”或“display”命令查看变量值。
(7)退出GDB:使用“quit”命令退出GDB。
4.GDB 的高级功能GDB 还提供了许多高级功能,如:(1)监视变量:使用“watch”命令实时查看变量的变化。
(2)执行子程序:使用“exec”命令执行子程序。
(3)控制程序执行:使用“continue”命令让程序继续执行,直到遇到下一个断点;使用“stop”命令让程序立即停止执行。
(4)设置断点条件:使用“break”命令设置条件断点,如:当某个变量的值发生变化时暂停程序。
(5)查看堆栈信息:使用“backtrace”或“bt”命令查看当前堆栈的调用情况。
5.总结GDB 是一款功能强大的调试工具,可以帮助程序员更加高效地查找和修复程序中的问题。
gdb使用手册

gdb使用手册【实用版】目录1.GDB 简介2.GDB 的基本组成3.GDB 的使用方法4.GDB 的常用命令5.GDB 的高级功能6.总结正文1.GDB 简介GDB(GNU Debugger)是一款功能强大的调试器,主要用于调试 C/C++程序。
GDB 具有丰富的功能,可以满足各种调试需求。
在开源软件领域,GDB 被广泛应用于程序开发和维护过程中。
2.GDB 的基本组成GDB 主要由以下几个部分组成:(1)调试器核心:提供基本的调试功能,如设置断点、单步执行等。
(2)调试器前端:与用户交互,接收用户输入的调试命令。
(3)调试器后端:与被调试程序交互,传递调试器核心发出的命令,并反馈执行结果。
(4)调试器驱动:负责与具体编程语言和编译器接口,实现对被调试程序的支持。
3.GDB 的使用方法使用 GDB 进行程序调试的基本步骤如下:(1)编写调试脚本:在 GDB 中设置断点、观察变量等,需要使用 GDB 命令编写调试脚本。
(2)编译程序:使用编译器编译待调试程序,同时需要添加适当的调试选项,如-g(GCC)或-O(Oracle C)。
(3)运行 GDB:在命令行中输入“gdb”命令,启动 GDB。
(4)载入程序:在 GDB 中输入载入命令,如“file”,指定待调试程序的路径。
(5)开始调试:使用 GDB 的各种命令,如设置断点、单步执行、观察变量等,对程序进行调试。
4.GDB 的常用命令GDB 提供了丰富的命令来满足调试需求,以下是一些常用的 GDB 命令:(1)run:开始执行程序。
(2)next:执行下一行代码,进入函数内部。
(3)step:执行当前行代码,进入函数内部。
(4)continue:继续执行程序,直到遇到下一个断点或程序结束。
(5)backtrace:查看当前函数调用栈。
(6)print:观察变量值。
(7)break:设置断点。
(8)set:设置调试选项,如设置变量值、修改代码等。
gdb调试命令的使用及总结

gdb调试命令的使用及总结gdb是一个强大的调试工具,可以帮助程序员定位和解决代码中的错误。
下面将介绍一些常用的gdb调试命令及其使用方法。
1. 启动程序要使用gdb调试一个可执行文件,可以使用以下命令启动程序:```gdb <可执行文件路径>```2. 设置断点断点是在程序执行过程中停止的位置。
可以使用以下命令设置断点:```break <文件名:行号>```例如,要在文件main.c的第10行设置断点,可以使用以下命令:```break main.c:10```3. 运行程序使用以下命令来运行程序:```run```4. 单步执行使用以下命令可以逐行执行程序:```next```5. 查看变量的值要查看变量的值,可以使用以下命令:```print <变量名>```例如,要查看变量x的值,可以使用以下命令:```print x```6. 修改变量的值在gdb中,可以直接修改变量的值。
使用以下命令可以修改变量的值:```set <变量名>=<新值>```例如,要将变量x的值修改为10,可以使用以下命令:```set x=10```7. 继续执行程序如果程序在断点处停止,可以使用以下命令继续执行程序:```continue```8. 退出调试要退出gdb调试,可以使用以下命令:```quit```gdb调试命令的使用非常简单,但它能够帮助程序员快速定位和修复代码中的错误。
通过设置断点、逐行执行、查看和修改变量的值,以及继续执行程序等命令,可以更加高效地进行调试工作。
希望本文能帮助读者更好地学习和使用gdb调试工具。
linux,gdb调试基本指令_linux gdb调试指令

(5).t 按二进制格式显示变量。
p str@str_len //打印字符串
(6).a 按十六进制格式显示变量。
第3页共7页
(7).i 指令地址格式
本文格式为 Word 版,下载可任意编辑,页眉双击删除即可。
(1)线程锁
(8).c 按字符格式显示变量。
show scheduler-locking
(9).f 按浮点数格式显示变量。
第2页共7页
本文格式为 Word 版,下载可任意编辑,页眉双击删除即可。
(1).p &examined_rows,得到地址
info locals //打印出当前函数中所有局部变量及其值。
(2).watch *(ha_rows *) 0x7ffec8005e28,则可以观察这个变量的变
info args //打印出当前函数的参数名及其值。
next //单步执行
CFLAGS 指定-g 选项,否则调试时没有符号信息。
return //函数未执行完,忽略未执行的语句,返回。
gdb program //最常用的用 gdb 启动程序,开始调试的方式
finish //函数执行完毕返回。
gdb program core //用 gdb 查看 core dump 文件,跟踪程序 core 的
本文格式为 Word 版,下载可任意编辑,页眉双击删除即可。
linux,gdb 调试基本指令_linux gdb 调试指令
比如:打印$pid 进程所有线程的堆栈并退出。 gdb -ex "set pagination 0" -ex "thread apply all
近年来,随着嵌入式技术飞速发展,嵌入式产品随处可见,Linux bt" -batch -p $pid
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用的gdb命令backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)breakpoint 在程序中设置一个断点cd 改变当前工作目录clear 删除刚才停止处的断点commands 命中断点时,列出将要执行的命令continue 从断点开始继续执行delete 删除一个断点或监测点;也可与其他命令一起使用display 程序停止时显示变量和表达时down 下移栈帧,使得另一个函数成为当前函数frame 选择下一条continue命令的帧info 显示与该程序有关的各种信息jump 在源程序中的另一点开始运行kill 异常终止在gdb 控制下运行的程序list 列出相应于正在执行的程序的原文件内容next 执行下一个源程序行,从而执行其整体中的一个函数print 显示变量或表达式的值pwd 显示当前工作目录pype 显示一个数据结构(如一个结构或C++类)的内容quit 退出gdbreverse-search 在源文件中反向搜索正规表达式run 执行该程序search 在源文件中搜索正规表达式set variable 给变量赋值signal 将一个信号发送到正在运行的进程step 执行下一个源程序行,必要时进入下一个函数undisplay display命令的反命令,不要显示表达式until 结束当前循环up 上移栈帧,使另一函数成为当前函数watch 在程序中设置一个监测点(即数据断点)whatis 显示变量或函数类型GDB命令分类详解一:列文件清单 (2)二:执行程序 (2)三:显示数据 (2)四:断点(breakpoint) (3)五.断点的管理 (3)六.变量的检查和赋值 (4)七.单步执行 (4)八.函数的调用 (4)九.机器语言工具 (4)十.信号 (4)十一.原文件的搜索 (5)十二. UNIX接口 (5)十三. 命令的历史 (5)十四. GDB帮助 (5)十五. GDB多线程 (6)十六. GDB使用范例 (7)一:列文件清单1.List(gdb) list line1,line2二:执行程序要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。
如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。
利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。
(gdb)set args –b –x(gdb) show argsbacktrace命令为堆栈提供向后跟踪功能。
Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。
三:显示数据利用print 命令可以检查各个变量的值。
(gdb) print p (p为变量名)whatis命令可以显示某个变量的类型(gdb) whatis ptype = int *print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。
表达式除了包含你程序中的变量外,还可以包含以下内容:l对程序中函数的调用(gdb) print find_entry(1,0)l数据结构和其他复杂对象(gdb) print *table_start$8={e=reference=’\000’,location=0x0,next=0x0}l值的历史成分(gdb)print $1 ($1为历史记录变量,在以后可以直接引用$1 的值)l人为数组人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。
早期的调试程序没有很好的方法将任意的指针换成一个数组。
就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:base@length因此,要想显示在h后面的10个元素,可以使用h@10:(gdb)print h@10$13=(-1,345,23,-234,0,0,0,98,345,10)四:断点(breakpoint)break命令(可以简写为b)可以用来在调试的程序中设置断点,该命令有如下四种形式:l break line-number 使程序恰好在执行给定行之前停止。
l break function-name 使程序恰好在进入指定的函数之前停止。
l break line-or-function if conditio如果condition(条件)是真,程序到达指定行或函数时停止。
l break routine-name 在指定例程的入口处设置断点如果该程序是由很多原文件构成的,你可以在各个原文件中设置断点,而不是在当前的原文件中设置断点,其方法如下:(gdb) break filename:line-number(gdb) break filename:function-name要想设置一个条件断点,可以利用break if命令,如下所示:(gdb) break line-or-function if expr例:(gdb) break 46 if testsize==100从断点继续运行:countinue命令五.断点的管理1.显示当前gdb的断点信息:(gdb) info break他会以如下的形式显示所有的断点信息:Num Type Disp Enb Address What1 breakpoint keep y 0x000028bc in init_random at qsort2.c:1552 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168(gdb)2. 删除指定的某个断点:(gdb) delete breakpoint 1该命令将会删除编号为1的断点,如果不带编号参数,将删除所有的断点(gdb) delete breakpoint3.禁止使用某个断点(gdb) disable breakpoint 1该命令将禁止断点1,同时断点信息的(Enb)域将变为n4.允许使用某个断点(gdb) enable breakpoint 1该命令将允许断点1,同时断点信息的(Enb)域将变为y5.清除原文件中某一代码行上的所有断点(gdb)clean number注:number 为原文件的某个代码行的行号六.变量的检查和赋值l whatis: 识别数组或变量的类型l ptype: 比whatis的功能更强,他可以提供一个结构的定义l set variable: 将值赋予变量l print: 除了显示一个变量的值外,还可以用来赋值七.单步执行next 不进入的单步执行step进入的单步执行finish 如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish八.函数的调用l call name 调用和执行一个函数(gdb) call gen_and_sork( 1234,1,0 )(gdb) call printf(“abcd”)$1=4l finish结束执行当前函数,显示其返回值(如果有的话)九.机器语言工具有一组专用的gdb变量可以用来检查和修改计算机的通用寄存器,gdb提供了目前每一台计算机中实际使用的4个寄存器的标准名字:$pc程序计数器$fp帧指针(当前堆栈帧)$sp栈指针$ps处理器状态十.信号gdb通常可以捕捉到发送给它的大多数信号,通过捕捉信号,它就可决定对于正在运行的进程要做些什么工作。
例如,按CTRL-C将中断信号发送给gdb,通常就会终止gdb。
但是你或许不想中断gdb,真正的目的是要中断gdb正在运行的程序,因此,gdb要抓住该信号并停止它正在运行的程序,这样就可以执行某些调试操作。
Handle命令可控制信号的处理,他有两个参数,一个是信号名,另一个是接受到信号时该作什么。
几种可能的参数是:nostop接收到信号时,不要将它发送给程序,也不要停止程序。
stop接受到信号时停止程序的执行,从而允许程序调试;显示一条表示已接受到信号的消息(禁止使用消息除外)print接受到信号时显示一条消息noprint接受到信号时不要显示消息(而且隐含着不停止程序运行)pass将信号发送给程序,从而允许你的程序去处理它、停止运行或采取别的动作。
nopass停止程序运行,但不要将信号发送给程序。
例如,假定你截获SIGPIPE信号,以防止正在调试的程序接受到该信号,而且只要该信号一到达,就要求该程序停止,并通知你。
要完成这一任务,可利用如下命令:(gdb) handle SIGPIPE stop print请注意,UNIX的信号名总是采用大写字母!你可以用信号编号替代信号名如果你的程序要执行任何信号处理操作,就需要能够测试其信号处理程序,为此,就需要一种能将信号发送给程序的简便方法,这就是signal命令的任务。
该命令的参数是一个数字或者一个名字,如SIGINT。
假定你的程序已将一个专用的SIGINT(键盘输入,或CTRL-C;信号2)信号处理程序设置成采取某个清理动作,要想测试该信号处理程序,你可以设置一个断点并使用如下命令:(gdb)signal 2continuing with signal SIGINT(2)该程序继续执行,但是立即传输该信号,而且处理程序开始运行.十一. 原文件的搜索Search text: 该命令可显示在当前文件中包含text串的下一行。
Reverse-search text: 该命令可以显示包含text的前一行。
十二. UNIX接口shell 命令可启动UNIX外壳,CTRL-D退出外壳,返回到gdb.十三. 命令的历史为了允许使用历史命令,可使用set history expansion on命令(gdb) set history expansion on十四. GDB帮助在gdb 提示符处键入help,将列出命令的分类,主要的分类有:* aliases:命令别名* breakpoints:断点定义;* data:数据查看;* files:指定并查看文件;* internals:维护命令;* running:程序执行;* stack:调用栈查看;* statu:状态查看;* tracepoints:跟踪程序执行。
键入help 后跟命令的分类名,可获得该类命令的详细清单。
十五. GDB多线程先介绍一下GDB多线程调试的基本命令。
l info threads显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。