Linux环境基础开发工具使用指南:掌握简单gdb使用于调试

文章目录

这是一份关于在Linux环境下使用gdb进行基础调试的指南。考虑到用户可能是刚开始接触gdb的开发者,因此内容需要简洁明了,步骤清晰,并包含常用命令的示例。rak部落小编为您整理发布Linux环境基础开发工具使用指南:掌握简单gdb使用于调试。

1. GDB简介

GDB(GNU Debugger)是Linux下强大的命令行调试工具,用于分析程序崩溃、逻辑错误和内存问题。核心功能包括:

  • 控制程序执行(启动/暂停/单步)
  • 设置断点/观察点
  • 查看变量和内存状态
  • 分析函数调用栈

2. 准备工作

(1) 安装GDB

bash

sudo apt install gdb  # Debian/Ubuntu
sudo yum install gdb  # CentOS/RHEL
(2) 编译带调试信息的程序

关键: 使用 -g 选项编译程序

bash

gcc -g main.c -o demo  # 生成带调试信息的可执行文件

3. 基础调试流程

(1) 启动GDB

bash

gdb ./demo  # 加载程序
(2) 常用命令速查表
命令简写功能说明
runr启动程序
breakb设置断点 (e.g. b main)
nextn单步执行(跳过函数)
steps单步执行(进入函数)
printp打印变量值 (e.g. p x)
continuec继续运行直到下一个断点
backtracebt查看函数调用栈
quitq退出GDB

4. 实战示例:调试崩溃程序

示例代码 (crash.c)

c

#include <stdio.h>

void trigger_crash() {
    int *ptr = NULL;
    *ptr = 42;  // 空指针解引用!
}

int main() {
    printf("程序启动\n");
    trigger_crash();
    return 0;
}
调试步骤

bash

# 编译程序
gcc -g crash.c -o crash

# 启动GDB
gdb ./crash

gdb

(gdb) b main      # 在main函数设断点
(gdb) r           # 运行程序 → 停在main()
(gdb) n           # 单步执行 → 跳过printf
(gdb) s           # 进入trigger_crash函数
(gdb) n           # 执行下一行 → 崩溃发生!

# 分析错误
(gdb) bt          # 查看调用栈
#0  trigger_crash () at crash.c:5
#1  0x000055555555517d in main () at crash.c:10

(gdb) p ptr       # 检查指针值 → $1 = (int *) 0x0
(gdb) q           # 退出

5. 高级技巧

  1. 条件断点gdb复制下载b 15 if i == 100 # 当i=100时在第15行暂停
  2. 监视变量gdb复制下载watch x # x的值变化时暂停
  3. 查看内存gdb复制下载x/8xw &array # 以16进制查看数组前8个int
  4. 多线程调试gdb复制下载info threads # 查看线程列表 thread 2 # 切换到线程2

6. 调试建议

  1. 程序崩溃时用 bt 查看调用栈
  2. 使用 -O0 禁用优化避免调试信息错乱
  3. 结合 valgrind 检测内存问题
  4. 善用 layout src 进入TUI模式(文本界面)

提示:输入 help <command> 查看命令帮助文档(如 help break

掌握这些基础操作后,您已能解决80%的常见调试问题!通过实践加深理解,可逐步探索更高级的调试功能。

Rak部落小编温馨提示:以上是小编为您整理发布的Linux环境基础开发工具使用指南:掌握简单gdb使用于调试。更多知识分享可持续关注我们,raksmart机房更有多款云产品免费体验,助您开启全球上云之旅。

raksmart618狂欢7天,全场首月6.1折

Linux环境基础开发工具使用指南:掌握简单gdb使用于调试

活动规则

1. 注册成为RAKsmart用户均可领取618全场折扣优惠券;(点击上方图片领取!!)

2. 618全场折扣优惠券不予代理商折扣同享;

3. 618全场折扣优惠券限产品首月优惠,续费原价;

4. 618全场折扣券除域名、云原生等产品外全站产品可用(含站群产品);

5. 产品折扣券有效期7天,在活动会场下单可直接使用;

6. 产品折扣券活动最终解释权为RAKsmart 所有。

原文链接:,转发请注明来源!

发表回复

要发表评论,您必须先登录