GDB初级教程(一)

下载测试程序

# 下载代码压缩包
wget http://labfile.oss.aliyuncs.com/courses/496/gdbtest.zip
# 解压
unzip gdbtest.zip

# 进入到代码目录查看文件列表
cd gdbtest/
ls -l

GDB的进入和退出

# -o 指定输出文件名
gcc -g -o bugging bugging.c 

#输入 gdb bugging 进入 gdb 调试 bugging 程序的界面:
gdb bugging

#在 gdb 命令行界面,输入run 执行待调试程序:
(gdb) run

#在 gdb 命令行界面,输入quit 退出 gdb:
(gdb) quit

#在 gdb 命令行界面,查看命令的用法。
(gdb) help command 

#在 gdb 命令行界面可以执行外部的 Shell 命令:
(gdb) !shell 命令

在这里插入图片描述

调用GDB的方式(4种)

1.直接使用 gdb 指令启动 GDB 调试器:# gdb
2.调试尚未执行的程序。
对于(使用 -g 选项编译而成)的可执行文件,调用 GDB 调试器的指令格式为:gdb program其中,program 为可执行文件的文件名。
3. 调试正在执行的程序
需要使用 GDB 调试正在运行的 C、C++ 程序,需要事先找到该程序运行所对应的进程号。pidof 文件名
在此基础上,可以调用 GDB 对该程序进行调试,调用指令有以下 3 种形式:
(1) gdb attach PID
(2) gdb 文件名 PID
(3) gdb -p PID
其中,PID 指的就是要调取的程序对应的进程号。
当调试完成后,如果想令当前程序进行执行,消除调试操作对它的影响,需手动将 GDB 调试器与程序分离,分离过程分为 2 步:
执行 detach 指令,使 GDB 调试器和程序分离;
执行 quit(或 q)指令,退出 GDB 调试。
4. 调试执行异常崩溃的程序
程序运行过程中常常会因为各种异常或者 Bug 而崩溃,比如内存访问越界(例如数组下标越界、输出字符串时该字符串没有 \0 结束符等)、非法使用空指针等,此时就需要调试程序。在 Linux 操作系统中,当程序执行发生异常崩溃时,系统可以将发生崩溃时的内存数据、调用堆栈情况等信息自动记录下载,并存储到一个文件中,该文件通常称为 core 文件,Linux 系统所具备的这种功能又称为核心转储(core dump)。当程序发生异常崩溃时,通过 GDB 调试产生的 core 文件,往往可以更快速的解决问题。
可以借助执行ulimit -a指令来查看当前系统是否开启此功能.
如果 core file size(core 文件大小)对应的值为 0,表示当前系统未开启 core dump 功能。ulimit -c unlimited
对于 core 文件的调试,其调用 GDB 调试器的指令为:# gdb main.exe core
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值