gdb调试[奇牛学院]

Posted Respect@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb调试[奇牛学院]相关的知识,希望对你有一定的参考价值。

gdb调试

gdb是GNU 发布的一个强大的程序调试工具,也是Linux 程序员不可或缺的一大利器。
本章我们将给出gdb 常用的命令的操作说明。

启动gdb

使用gdb的前提:
$ gcc -g hello.c -o hello

启动gdb 调试:
$ gdb hello

注意:
如果系统没有安装gdb 的同学,可以体验使用源码安装的方式来安装:

  1. wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz
  2. tar -zxvf gdb-8.1.1.tar.gz
  3. cd gdb-8.1.1
  4. ./configure
  5. make
  6. make install

然后就可以进入命令行操作,和 Shell 一样,gdb 支持命令补全。输入几个字母,按Tab键,gdb 会补全命令。按两次Tab ,会提示所有可能的命令。
另外,其还支持命令缩写,如, h 代表 help ,
常用命令如下:

获取帮组命令 help
gdb将命令分为12个大类,使用命令: “help 子类别”可以查看没类下面的详细帮助。

如: help breakpoints

设置断点
break 命令用于设置断点,命令接受行号或者函数名作为参数。

break也可设置条件断点:
如: break sayHello if count<1
使用info break 可以查看断点

使用 clear 可以清除断点

运行程序和单步执行
设置完断点后,就可以运行调试程序了,使用run命令(缩写为 r)运行程序至断点。

此时,程序中断,gdb 等待用户发出下一步操作的指令。设用next 命令(缩写为 n)单步执行程序。也可以指定一个数字。下面这条命令让gdb 连续执行两行,然后停下。

如果想继续运行,可以使用continue 命令(缩写为 c )指导 gdb 继续运行程序,直至遇到下一个断点。
如果想继续单步执行,可以继续使用 next,也是以使用 step (缩写为 s), step 和 next 的最大的区别在于,step 遇到函数是会进入到内部,而next 不会进入内部.

监视变量
调试程序最基本的需求就是监视变量的值,可以使用 print 命令(缩写为 p) 显示指定变量的值。

如果要时刻监视某个变量的值,那么每次使用 print 就不方便。比较人性化的是,gdb 提供了watch 命令,用于设置另一种断点:“观察点”。
用法是: watch 变量名或表达式作为参数,一但值发生变化,就停下来。

临时修改变量
当某些特殊情况下,我们想让程序进入一些特殊的流程时,gdb允许用户在程序运行时改变变量的值,通过 set var 命令实现这一点。


查看堆栈情况
每次程序调用一个函数,函数的地址、参数、函数内部变量都会被压入“栈”(Stack) 中,运行时堆栈信息对于程序员非常重要,使用 “bt”命令可以看到当前运行时栈的情况。

退出 gdb
调试完毕,使用quit命令(缩写为q) 退出 gdb程序。

以上是关于gdb调试[奇牛学院]的主要内容,如果未能解决你的问题,请参考以下文章

gdb调试程序函数名为问号,啥原因?

gd调试命令,gdb调试core文件

GDB调试

简述-gdb检测apk是不是可以被调试

在docker中使用gdb调试程序

如何用gdb调试erlang运行期