基础启动流程
-
安装GDB(如未安装)
Debian/Ubuntu系统:sudo apt update && sudo apt install gdb
CentOS/RHEL系统:
sudo yum install gdb
-
编译可调试程序
使用-g
参数编译代码(以C程序为例):gcc -g my_program.c -o my_program
-g
选项会在二进制文件中嵌入调试符号,这是GDB正常工作的关键。 -
启动GDB
基础命令格式:gdb [可执行文件]
示例:
gdb ./my_program
成功启动后终端显示
(gdb)
提示符,表示进入交互模式。
高级启动方式
-
附加到运行中的进程
gdb -p [进程ID]
示例(调试PID为1234的进程):
gdb -p 1234
适用场景:调试后台服务或卡死进程
-
调试核心转储文件
gdb [可执行文件] [core文件]
示例:
gdb ./my_program core.1234
提示:需提前启用core dump(
ulimit -c unlimited
) -
带参数启动程序
gdb --args ./my_program arg1 arg2
或在GDB内设置参数:
(gdb) set args arg1 arg2
启动后关键操作
-
控制程序执行
run
或r
:启动程序break [行号/函数名]
:设置断点next
或n
:单步跳过step
或s
:单步进入continue
或c
:继续运行
-
查看调试信息
(gdb) backtrace # 查看调用栈 (gdb) print var # 打印变量值 (gdb) info locals # 显示局部变量
常见问题解决
-
“No symbol table”错误
→ 重新用gcc -g
编译程序,确保调试符号存在 -
权限不足
→ 调试系统进程时使用sudo gdb -p [PID]
-
GDB版本不匹配
→ 用gdb --version
检查版本,建议使用发行版官方源安装
安全提示
- 生产环境慎用GDB,可能引发服务中断
- 调试结束及时断开附加进程(
detach
命令) - 敏感程序调试需在隔离环境进行
引用说明基于GDB官方文档(sourceware.org/gdb/current/onlinedocs/gdb)及Linux man-pages项目,操作验证环境为GDB 12.1 + GCC 11.3,适用于主流的Linux发行版,建议结合《GDB调试权威指南》等专业资料深入学习。
通过以上步骤,您可安全高效地启动GDB,调试完成后,用quit
命令退出,掌握GDB启动技巧是定位内存泄漏、段错误等复杂问题的基石,建议通过实际调试案例巩固技能。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5964.html