Linux 之二:GDB调试命令

1. 什么是gdb

  gdb(GNU symbolic debugger)是GNU开源组织发布的一个强大的Linux下的程序调试工具(GNU Project 调试器),它使你可以查看另一个程序在“执行”期间正在执行的操作,或该程序崩溃时正在执行的操作。
  gdb主要可以如下4个方面的事情:
  (1)启动我们的程序,可以按照我们的自定义的要求随心所欲的运行程序。
  (2)使程序在指定条件下停止。
  (3)检查程序停止时发生的情况。
  (4)更改程序中的内容,以便我们可以尝试纠正一个错误的影响,然后继续学习另一个错误。

2. gdb调试命令

  写在前面:gdb调试的是可执行文件,而且这个可执行文件必须带有调试信息才行(gcc编译时必须带有-g参数),而非.c文件(源文件),例如我们有一个名为e_test的可执行文件,启动e_tset调试的方法为:gdb ./e_test 。
在这里插入图片描述

2.1 运行指令(Program running commands)

说  明:以下这些命令用于运行程序。
指  令

  • (gdb) run(简称 r):全速运行程序,直到遇到“断点”或“程序产生错误”时停止。
  • (gdb) continue (简称 c):继续运行程序,直到遇到下一个断点或错误。
  • (gdb) finish :运行程序,直到当前函数(function)执行完成。
  • (gdb) step(简称 s):执行下一行程序(若下一行是个函数,则会进入函数体内)。
  • (gdb) step N (简称 s N) :执行下N行代码。
  • (gdb) stepi (简称 si):执行完一条机器指令,然后停止并返回到调试器。
  • (gdb) next (简称 n):执行下一行代码,与s类似,但是next不进入函数体。
  • (gdb) nexti (简称 ni):执行一条机器指令。如果是一个函数调用,则该命令将继续执行,直到函数返回。
  • (gdb) until (简称 u):在堆栈中上升一层,该命令用于避免单步执行循环多次。
  • (gdb) until N (简称 u N):执行运行程序,直到当前行前面已经运行了N行代码。

2.2 断点指令(Breakpoint commands)

说  明:该命令在指定位置设置软件断点,断点可以是函数名、行号或指令地址。
指  令

  • (gdb) b main:在main函数入口设置断点。
  • (gdb) b:在当前行设置断点。
  • (gdb) b \<n>:在第n行设置断点。
  • (gdb) b +\<n>:在当前行之后(forward)的第n行设置断点。
  • (gdb) b -\<n>:在当前行之前(backward)的第n行设置断点。
  • (gdb) b \<function>:在function函数处设置断点。
  • (gdb) b \<filename>:<linenum>:在某个文件(filename)的第linenum行设置断点。
  • (gdb) b <filename>:<function> :在某个文件(filename)的函数(function)处设置断点。
  • (gdb) b * \<address> :在地址(address)处设置断点。

2.3 回溯指令(Backtrace command)

说  明:回溯指令(简称bt)可以打印整个堆栈的信息。在任何时候,均可以通过输入系统中断字符(Ctrl + c)停止回溯。
指  令

  • (gdb) bt:查看栈信息。
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux GDB调试命令包括: 1. run:运行程序 2. break:设置断点 3. next:执行下一行代码 4. step:进入函数内部 5. print:打印变量值 6. watch:监视变量 7. backtrace:查看函数调用栈 8. info:查看程序信息 9. quit:退出调试 10. help:查看帮助信息 ### 回答2: Linux GDB调试命令是一种非常强大的工具,它可以帮助程序员找到程序中的错误,优化代码并提高程序性能。下面是一些常用的GDB调试命令: 1. run:启动程序并在GDB环境中运行 2. break:在程序中设置断点,可以是代码行、函数或地址 3. step/next:逐行执行程序中的代码,step进入函数内部,next不进入函数内部而是执行完当前函数 4. backtrace/b:显示当前程序的堆栈信息 5. print/p:打印程序的变量和表达式的值 6. continue/c:继续执行程序,直到下一个断点或程序结束 7. watch:跟踪程序变量的值的变化,在变量被改变时触发断点停止程序 8. set:更改程序变量的值 9. info/i:显示程序的各种信息,如函数、断点、变量、寄存器等 10. thread:控制程序的多线程,允许用户切换线程、查看线程堆栈和寄存器等 以上是一些常用的Linux GDB调试命令,通过这些工具可以帮助程序员快速定位程序的问题,提高程序的性能和优化程序的效率,是一款非常实用的开发工具。 ### 回答3: GDBGNU调试器,是Linux下常用的调试工具。GDB可以用来调试C、C++、Objective-C、Ada和Fortran等编程语言的程序。下面将介绍一些常用的GDB调试命令。 1.启动GDBLinux终端中输入“gdb 文件名”即可启动GDB,并打开待调试的文件。 2.运行程序 在GDB中使用“run”命令可启动程序。如“run arg1 arg2”则带上两个参数运行程序。 3.程序暂停 在程序执行时想要暂停,可以使用“ctrl+c”键来中断程序。也可以在GDB中使用“kill”命令杀死程序。 4.查看源程序 在GDB中使用“list”命令可以查看源程序。例如,“list 1,20”命令可以查看文件的第1-20行。 5.设置断点 在GDB中使用“break”命令可以设置断点。例如,“break main”命令可以在程序的main函数开始处设置断点。“break 文件名:行号”命令则可以在指定行设置断点。 6.查看当前位置 在GDB中使用“where”命令可以查看当前执行的位置。该命令会列出函数调用堆栈的所有帧。 7.查看当前变量 在GDB中使用“print”命令可以查看变量的值。例如,“print x”命令可以查看变量x的值。 8.单步执行 在GDB中使用“step”命令可以执行下一条语句。使用“next”命令可跳过函数调用。 9.继续运行 在GDB中使用“continue”命令可以让程序继续执行,直到下一个断点或程序结束。 10.查看堆栈 在GDB中使用“backtrace”命令可以查看函数调用堆栈。该命令会列出所有被调用的函数及它们的参数和返回值。 以上就是GDB调试命令的一些常见用法。需要注意的是,GDB是一种非常强大的调试工具,使用不当会导致程序崩溃或其他错误。因此,在使用GDB进行调试时一定要谨慎操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值