gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试程序异常崩溃的原因,修复相应的bug。core文件生成需要通过ulimit -c命令来查看和配置,当显示为0时,表示系统不会生成core文件,这个时候我们需要配置相应的环境,使系统可以在程序异常崩溃的时候,生成core文件。
可通过如下命令设置core文件大小和输出位置
ulimit -c unlimited
临时生效则是使用echo命令将想要的格式写入到该文件中,比如
echo ‘/usr/core -%e -%p -%t' > /proc/sys/kernel/core_pattern
/usr/core
: 指定核心转储文件的存储目录。-%e
: 代表崩溃程序的可执行文件名。-%p
: 代表崩溃进程的进程ID。-%t
: 代表崩溃发生的时间戳。
下面记录下GDB的简单排查问题实用
1. 启动 GDB
在终端中,输入以下命令来启动 GDB:
gdb ./your_program
2. 设置断点
你可以在程序的某个函数或者行号设置断点:
break main # 在 main 函数处设置断点
break filename.c:line_number # 在特定文件的特定行设置断点
3. 运行程序
输入命令开始运行程序:
run
4. 程序暂停
当程序运行到断点处时,会暂停,显示当前状态。
5. 检查变量
使用以下命令查看变量的值:
print variable_name # 打印变量的值
6. 单步调试
逐步执行代码:
next
:执行下一行(不进入函数内部)step
:执行下一行(进入函数内部)
7. 继续执行
如果需要继续执行到下一个断点,可以使用:
continue
8. 查看调用栈
如果程序崩溃,可以查看调用栈:
backtrace
9. 退出 GDB
使用以下命令退出 GDB:
quit
10. 其他有用命令
list
:查看当前执行代码附近的源代码。info locals
:查看当前函数中的所有局部变量。watch variable_name
:监视某个变量的变化。
下面是使用 GDB 调试的示例步骤:
编译程序时加上调试信息:
gcc -g -o my_program my_program.c
启动 GDB:
gdb ./my_program
设置断点和运行:
break main
run
使用 next 或 step 逐步调试,查看变量值。
使用 GDB 排查 core 文件的基本步骤如下:
准备环境: 确保你的程序在编译时使用了调试信息。可以通过添加 -g
标志来编译你的代码,例如:
gcc -g -o my_program my_program.c
生成 Core 文件:
运行程序并使其崩溃,通常可以通过设置环境变量 ulimit
来确保生成 core 文件:
ulimit -c unlimited
./my_program
使用 GDB 加载 Core 文件: 使用 GDB 加载你的程序和生成的 core 文件:
gdb ./my_program core
查看崩溃信息: 在 GDB 中,你可以使用以下命令来查看崩溃时的堆栈信息:
(gdb) bt
检查变量值: 你可以查看特定变量的值:
(gdb) print variable_name
导航源代码: 使用 list
命令查看崩溃位置附近的代码:
设置断点: 你可以在特定函数或行上设置断点,以便进一步调试:
(gdb) break function_name
继续执行: 如果想从某个点继续执行,可以使用:
(gdb) continue
退出 GDB: 调试完成后,使用以下命令退出:
(gdb) quit
原文地址:https://blog.csdn.net/weixin_44419248/article/details/142424181
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!