linux调试程序GDB的常用命令

linux中的大型程序报错,进行调试debug是一个浩大的工程,但是没有GUI界面进行断点调试,这对代码的优化十分不利。另外,有时候在Fortran程序中出现无缘无故的错误(例如全局变量无故变化,或者报错invalid memory reference),这涉及到内存占用的问题。这个问题是单纯依靠程序输出无法察觉到的。因此需要一个dubug工具:GDB。

安装命令:

$ sudo apt-get install gdb

使用/退出命令:

$ gfortran -g test.f -o a.out  #-g选项是必要的,另外也可以加入-fbacktrace可以返回报错源程序位置,而不是返回报错的内存地址。

$ gdb a.out  #进入gdb进行debug,然后就可以在gdb中对可执行文件进行debug了,注意gdb只针对可执行文件,不对源文件

$ quit  #退处gdb,也可以只输入q

断点和监视点命令:

设置断点

$ break 130  #130行设置断点

$ break sum  #给subroutine sum设置断点

$ tbreak 130 #130行设置临时断点,运后即删该断点

$ break 断点 if 条件 

$ condition 断点编号  条件

查看断点编号

$ info breakpoints  #显示所有断点和监视点

编辑断点

$ delete 10 #删除10号断点

$ clear sum   #删除sum函数中的所有断点

$ disable 10 #禁用10号断点

$ enable 10  #启用10号断点

设置监视点

$ watch a #当a发生变化时暂停

$ rwatch a  #当a被访问时暂停运行

$ awatch a  #当a被访问或改变时暂停运行

继续运行

$ next  #执行下一行,简称n

$ step  #执行函数内部,简称p

$ continue #执行到下个断点,简称c

$ until #退出循环内的断点,直到循环结束

$ until 10 #跳过断点,一直运行到到第10行

$ ignore 2 3000  #跳过2号断点3000次再暂停

$ finish  #执行到当前函数后暂停

显示命令:

$ print a  #显示变量a的内容

$ list 100 200  #显示100-200行之间的源代码

$ backtrace 10  #显示开头10个栈的内容,简称bt

$ bt full 10 #显示开头10个栈的内容还有局部变量内容

$ x  #显示内存内容 

$ x/i $pc  #显示汇编指令

$ x/10i $pc  #显示从pc地址开始的10条指令内容

$ p $pc  #显示程序指针内容

$ info registers  #显示寄存器 简写info reg

$ info proc  #显示当前进程信息

$ info funciton #显示函数

$ info locals #显示所有堆栈

将GDB附属在某个进程上

$ attach 107  #将GDB附着在107号进程中

调用函数

$ call sum(1,2)  #调用sum函数

$ set $i=0  #设置参数i=0

linux调试程序GDB的常用命令

上一篇:MSSQL 经典SQL 语句--使用PIOVT 行转列


下一篇:《MySQL技术内幕-InnoDB存储引擎》整理3-表