Linux GDB 调试
一、初识 GDB
GDB 是一个开源的、功能强大的调试工具,主要用于调试 C、C++ 等语言编写的程序。它支持多种操作系统和架构,能够帮助开发者在程序运行过程中暂停执行、查看变量值、修改程序状态等,从而快速定位和修复问题。
二、启动 GDB
1. 加载程序
如果你已经编译好了一个程序,可以直接通过以下命令启动 GDB 并加载程序:
gdb <program>
例如,如果你的程序名为 example,则可以输入:
gdb example
GDB 会加载该程序,并进入调试模式。
2. 加载程序与参数
如果程序需要接收命令行参数,可以使用以下命令启动 GDB:
gdb <program> --args <args>
例如,程序需要接收一个文件路径作为参数,可以这样启动:
gdb example --args input.txt
在 GDB 中,可以通过 run 命令启动程序,并传递参数。
3. 加载程序与核心转储文件
当程序崩溃并生成了核心转储文件时,可以通过以下命令启动 GDB,加载程序和核心转储文件进行调试:
gdb <program> <core>
这可以帮助你分析程序崩溃的原因。
三、设置断点
断点是调试过程中非常重要的工具,它可以让程序在指定的位置暂停执行,方便我们查看程序状态。
1. 在函数处设置断点
如果你知道程序在某个函数中可能出现问题,可以使用以下命令在该函数处设置断点:
break <function>
例如,设置在 main 函数处的断点:
break main
程序运行到 main 函数时会暂停。
2. 在文件的指定行设置断点
如果你已经大致知道问题可能出现在代码的哪一行,可以使用以下命令在指定文件的指定行设置断点:
break <filename>:<line>
例如,设置在 example.c 文件的第 10 行的断点:
break example.c:10
程序运行到该行时会暂停。
3. 在指定内存地址处设置断点
在某些情况下,你可能需要在指定的内存地址处设置断点,可以使用以下命令:
break *<address>
例如,设置在内存地址 0x1000 处的断点:
break *0x1000
程序运行到该地址时会暂停。


