Linux下用gdb调试程序
2018-03-04 19:30
309 查看
简单了解gdb
gdb是UNIX及UNIX-like下用于调试程序的调试工具,它的功能非常强大,在Windows下调试多了的程序员会对gdb这样的调试工具感觉非常的不熟悉,但是在Unix下,它应该是最好的调试工具了。gdb主要功能
启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
当程序被停住时,可以检查此时你的程序中所发生的事。
你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
gdb下的主要的几个命令
命令 | 解释 | 例子 |
---|---|---|
r/run | 运行当前调试程序 如果遇到断点就在断点处停下,没有断点则直接跑完程序 | (gdb) r test |
l/list | 列出源代码,从上次列出的位置接着往下列 list + 行号 以该行号为中心显示 list +行号,行号,显示两个行号之间的代码 list +其他文件:行数,显示另一文件的某一行 | (gdb) l (gdb) l 10 (gdb) l 10,15 (gdb) l test.h:1 |
file | 加载被调试的可执行程序文件 | (gdb) file test |
c/continue | 继续程序的执行,直至下一个断点或程序结束 | (gdb) c |
b 行号 b 函数名称 b *地址 b 行号 +条件 d 编号 | 给第几行标注断点 给某个函数开始处标注断点 给某个地址标注断点,用于没有源文件时 条件断点,如果条件成立给某行标注断点 给断点标号 | (gdb) b 6 (gdb) b main (gdb) b *0xffffffff (gdb) b 8 if a==8 (gdb) d |
s,n si,ni | s:执行一行源程序代码,若该代码有函数则进入该函数(逐语句) n:执行一行源程序代码,若该行代码有函数调用一并执行,不进入函数(逐过程) si和ni相当于汇编语言下的s和n | (gdb) s (gdb) n |
p/F 变量名 | 显示指定变量的值,可以是临时变量或者是全局变量。F是打印的格式 x-16进制,d-有符号十进制,u-无符号十进制,f-浮点格式 | (gdb) p/x i |
display ... undisplay 编号 | display,用于显示表达式的值,每当程序运行到断点处都会显示表达式的值 undisplay + display 编号 用于结束某个表达式值的显示 | (gdb) display a (gdb) undisplay 3 |
i/info | 用于显示各类信息,具体的可以用help i来查看,下面有讲到一些 | (gdb) i r |
watch | 当运行run后,你想知道哪些值在运行中被改变了 | (gdb) watch expresstion |
终止正在调试的程序 | (gdb)kill | |
shell | 执行shell命令 | (gdb)shell ls |
until 行数 | 运行到函数某一行 | (gdb)until 3 |
finish | 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值以及参数信息 | (gdb)finish |
常用的info用法
info+参数 | 用法 |
---|---|
info break | 查看断点信息 |
info args | 查看当前函数的参数 |
info stack | 查看调用堆栈 |
info source | 查看当前源文件信息 |
info display | 查看所有要显示的表达式的值 |
关于断点的几个用法
参数 | 用法 |
---|---|
disable 断点号 | 关闭断点 |
enable 断点号 | 打开断点 |
enable once 断点号 | 开启一次 |
enable delete 断点号 | 开启一次后删除 |
delete 断点号 | 删除断点 |
clear | 清除当前行的断点 |
c/continue | 继续执行程序,直到下一个断点处 |
关于数据的几个用法
命令 | 用法 |
---|---|
display+表达式 | 用于显示表达式的值,每当程序运行到断点处都会显示表达式的值 |
info display | 用于显示当前所有要显示值的表达式情况 |
delete display + 编号 | 用于删除一个要显示的值 |
disable/enable display+编号 | 使要显示的一个表达式的值失效/开启 |
undisplay +编号 | 用于结束某个表达式的显示 |
whatis+变量 | 用于显示变量类型 |
set 变量=变量值 | 用于改变程序中某个变量的值 |
相关文章推荐
- gdb调试程序(linux 下程序开发)
- Linux下如何用GDB调试c++程序
- linux使用gdb调试程序完全教程
- Linux上CUDA程序调试(cuda-gdb)
- Linux系统中的gdb程序调试工具的命令知识介绍
- linux下如何用GDB调试c++程序
- Linux高级编程--04.GDB调试程序(设置断点)
- Linux —— GDB调试程序
- 在Linux中用gdb调试GCC程序
- linux gdb运行不下去的程序调试方法
- 编译arm-linux-gdb和远程调试arm板程序
- [Pthread] Linux程序调试的基石(二)--Inside GDB
- Linux下使用GDB调试程序的方法
- gdb+gdbserver调试arm-linux程序
- 如何解决Linux下Qt Creator调试C/C++程序出现Debugging starts &"warning: GDB: Failed to set controlling terminal警告
- Linux下gdb调试程序及举例
- Linux下的 GDB调试 【在线sample程序--&&--离线sample程序】
- Linux下如何用GDB调试c++程序
- linux平台学x86汇编(五):使用gdb调试汇编程序
- Linux GDB程序调试工具使用简介