Linux进阶之调试与故障排查

调试与故障排查是 Linux 系统管理和开发的重要组成部分。本章将详细讲解使用 GDB 进行程序调试的技巧,以及常见系统故障的排查方法,包括核心命令和示例。


一、使用 GDB 进行程序调试

1、GDB 概述

GDB(GNU Debugger)是 Linux 中的强大调试工具,用于调试 C/C++ 程序,支持断点设置、变量跟踪、单步执行等功能。


2、GDB 的安装

在 Debian/Ubuntu 系统中:

sudo apt install gdb -y

在 CentOS/RHEL 系统中:

sudo yum install gdb -y

验证安装:

gdb --version

3、GDB 的基本使用

编译程序以支持调试
在编译时添加 -g 选项生成调试符号:

gcc -g -o example example.c

运行 GDB
使用以下命令加载程序:

gdb ./example

常用 GDB 命令
以下是一些常用命令及其说明:

  • 运行程序run
  • 设置断点break <行号>break <函数名>
  • 显示变量值print <变量名>
  • 单步执行step(进入函数)或 next(跳过函数)
  • 继续执行continue
  • 退出调试quit

示例
假设调试以下程序 example.c

#include <stdio.h>

int main() {
    int a = 10, b = 0;
    printf("Result: %d\n", a / b); // Intentional error
    return 0;
}

使用 GDB 调试:

  1. 启动 GDB:
    gdb ./example
    
  2. 设置断点:
    break main
    
  3. 运行程序:
    run
    
  4. 检查变量:
    print a
    
  5. 发现错误位置并修改代码。

二、常见系统故障排查技巧

1、系统资源不足

问题描述
系统性能下降,可能由 CPU、内存、I/O 或网络资源不足引起。

解决方法

  • 使用 top 查看资源占用
    top
    
  • 使用 iotop 查看 I/O 情况
    iotop
    
  • 使用 free 查看内存使用情况
    free -h
    

示例
假设 free -h 输出如下:

              total        used        free      shared  buff/cache   available
Mem:           8.0G        6.5G        1.0G        0.2G        0.5G        1.3G

如果可用内存过低,需考虑释放缓存或扩展内存。


2、系统启动故障

问题描述
系统无法正常启动,可能由于引导配置错误、文件系统损坏等原因。

解决方法

  • 进入恢复模式:启动时按 EscShift 进入 GRUB,选择恢复模式。
  • 检查 GRUB 配置
    cat /boot/grub/grub.cfg
    
  • 修复文件系统
    fsck /dev/sda1
    

3、网络连接问题

问题描述
无法连接到网络或特定主机。

解决方法

  • 使用 ping 测试连通性
    ping 8.8.8.8
    
  • 检查路由配置
    ip route show
    
  • 查看 DNS 配置
    cat /etc/resolv.conf
    

示例
如果 ping 显示网络不可达,需检查网关或接口状态:

ip link show

4、文件系统满载

问题描述
系统报错 “No space left on device”。

解决方法

  • 检查磁盘使用情况
    df -h
    
  • 查找大文件
    find / -type f -size +500M
    

示例
如果发现 /var/log 占用过多空间,可以使用 logrotate 压缩旧日志。


三、小结

通过本章学习,你掌握了以下内容:

  1. GDB 调试:定位程序错误,排查运行时问题。
  2. 系统故障排查:涵盖资源不足、启动问题、网络故障和磁盘满载等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值