简介

  • gdb工具的理论知识

gdb 常用命令

GDB(GNU Debugger)是一个功能强大的调试工具,提供了许多命令来帮助程序员进行调试。以下是GDB的全部命令及其详细解释:

常用命令

  1. run:运行程序。例如:run arg1 arg2
  2. break:设置断点。
    • break <function>:在指定函数的入口处设置断点。
    • break <line>:在指定行号处设置断点。
    • break <file:line>:在指定文件的指定行号处设置断点。
    • break <address>:在指定地址处设置断点。
  3. continue:继续执行程序,直到下一个断点或程序结束。
  4. next:执行下一行代码,但是不会进入函数内部。
  5. step:执行下一行代码,并进入函数内部。
  6. print(或者简写为p):打印变量的值。
    • print <variable>:打印指定变量的值。
    • print <expression>:计算并打印指定表达式的值。
  7. backtrace(或者简写为bt):显示当前的函数调用堆栈。
  8. info locals:显示当前函数的局部变量。
  9. info breakpoints:显示当前设置的所有断点。
  10. delete:删除指定的断点。
    • delete <breakpoint>:删除指定编号的断点。
    • delete breakpoints:删除所有断点。
  11. watch:设置观察点。
    • watch <expression>:当指定表达式的值发生变化时中断程序。
  12. finish:执行完当前函数并停止。
  13. quit:退出GDB。

其他常用命令

  1. list:显示源代码。
    • list:显示当前位置附近的源代码。
    • list <function>:显示指定函数的源代码。
    • list <line>:显示指定行号附近的源代码。
  2. info registers:显示寄存器的值。
  3. set:设置变量的值。
    • set <variable>=<value>:将指定变量的值设置为指定值。
  4. display:持续显示表达式的值。
    • display <expression>:每次停止时显示指定表达式的值。
  5. x:显示内存内容。
    • x/<count><format> <address>:以指定格式显示指定地址开始的内存内容。
  6. info threads:显示当前线程信息。
  7. **thread **:切换到指定线程。
  8. set args:设置运行程序时的命令行参数。
  9. set environment:设置运行程序时的环境变量。
  10. directory:指定源代码文件的搜索路径。
  11. **run **:运行程序并传递命令行参数。

以上只是GDB命令的一小部分,GDB还有更多的命令和选项可供使用。你可以在GDB的命令行界面中输入help命令来查看完整的命令列表和使用说明。


gdb 是什么

GDB(GNU Debugger)是一个功能强大的调试工具,用于在Linux和其他操作系统上调试程序。它提供了许多功能和命令,用于追踪程序的执行、查看变量的值、检测内存错误等。下面是对GDB的一些详解:

  1. 启动程序:使用gdb命令后跟要调试的可执行文件的路径来启动GDB。例如:gdb ./my_program

  2. 设置断点:使用breakb命令在代码中设置断点。可以使用行号、函数名或文件名来指定断点的位置。例如:b mainb file.cpp:10

  3. 运行程序:使用runr命令来运行程序。可以带上命令行参数。例如:r arg1 arg2

  4. 单步执行:使用nextn命令进行逐行单步执行。可以逐过程地执行函数体内部的语句。

  5. 进入函数:使用steps命令进入函数内部并逐语句单步执行。

  6. 继续执行:使用continuec命令继续程序的执行直到下一个断点或程序结束。

  7. 打印变量值:使用printp命令打印变量的值。可以打印局部变量、全局变量、表达式等。例如:p my_var

  8. 查看堆栈:使用backtracebt命令查看函数调用的堆栈信息,显示调用链。

  9. 查看源代码:使用listl命令查看源代码,显示当前位置附近的代码片段。

  10. 修改变量值:使用set命令修改变量的值。例如:set my_var = 42

  11. 监视变量:使用watch命令设置监视点,当变量的值发生变化时,程序会停在相应的位置。

  12. 内存调试:使用GDB的内存调试功能,可以检测和分析内存错误、内存泄漏等问题。

  13. 调试核心转储文件:使用core命令调试核心转储文件,用于分析程序崩溃或异常终止的情况。

  14. 断点条件和命令:可以在设置断点时指定条件和命令,以控制程序的执行流程。

  15. 定义自定义命令:可以使用GDB的Python扩展或GDB脚本语言来定义自定义命令,以实现更复杂的调试操作。

  16. 调试多线程程序:GDB支持调试多线程程序,可以追踪和控制每个线程的执行。

这只是GDB的一小部分功能和命令,GDB还有很多

其他强大的功能,如条件断点、反汇编、寄存器查看等。你可以查阅GDB的官方文档或其他资源,深入了解和掌握更多关于GDB的知识和技巧。调试是开发过程中的重要环节,GDB可以帮助你更好地理解程序的执行过程,定位和解决问题。