Linux Minimal系统调试方法
日志是Minimal系统调试的核心工具,系统会将启动、服务运行、硬件交互等信息记录到日志文件中,通过分析日志可快速定位问题根源。
/var/log/messages:记录系统一般消息(如内核、服务状态);/var/log/syslog:记录系统日志(包含用户级服务信息);/var/log/kern.log:记录内核相关消息(如硬件驱动加载);/var/log/boot.log:记录系统启动过程的详细信息。cat(查看完整文件)、tail -f(实时跟踪最新日志)、grep "关键词" 文件名(过滤特定内容,如grep "error" /var/log/syslog)命令查看日志。journalctl可集中管理日志,支持按服务、时间、优先级过滤:
journalctl:查看所有日志;journalctl -b:查看当前启动会话的日志;journalctl -b -1:查看上一次启动的日志;journalctl -u nginx:查看nginx服务的日志;journalctl -p err:仅显示错误级别日志;journalctl --since "1 hour ago":查看过去1小时的日志。对于编译型程序(如C/C++),需通过调试器查看程序运行时的变量、调用栈等信息;对于脚本程序(如Python),可使用内置调试器或日志增强。
-g选项的可执行文件(如gcc -g test.c -o test),基本命令:
gdb ./test:启动GDB并加载程序;break main:在main函数处设置断点;run:运行程序(带参数可写为run arg1 arg2);next(或n):单步执行(跳过函数调用);step(或s):单步进入函数;print 变量名:打印变量值(如print num1);backtrace(或bt):查看函数调用栈(定位错误发生的位置)。strace ls),常用选项:
strace -p PID:跟踪指定进程(如strace -p 1234);strace -e trace=open,read:仅跟踪open和read系统调用。valgrind --leak-check=full ./test),输出结果会显示内存泄漏的位置和大小,适合C/C++程序。logging模块添加日志(如logging.debug("变量值:%s", var)),或使用pdb调试器(在代码中插入import pdb; pdb.set_trace(),运行后进入交互式调试)。Minimal系统资源有限,通过监控工具可查看CPU、内存、磁盘等资源的使用情况,定位性能瓶颈或资源耗尽问题。
top:实时显示进程的CPU、内存占用率(按q退出,按M按内存排序,按P按CPU排序);htop:更直观的top替代工具(需安装,如sudo apt install htop)。free -h,显示人类可读的单位)。df -h,显示各分区剩余空间)。vmstat 1,每秒刷新一次,显示CPU、内存、IO等指标)。Minimal系统通常用于服务器或嵌入式设备,硬件故障可能导致系统不稳定,需通过以下工具排查:
lspci,显示显卡、网卡等设备型号);lsusb,显示U盘、鼠标等设备信息);fdisk -l,显示磁盘分区表);sudo smartctl -a /dev/sda,显示硬盘SMART信息,包括坏道、温度等)。若问题与内核相关(如启动黑屏、驱动崩溃),需启用内核调试功能或使用专用工具:
linux行添加debug(开启内核调试信息)或nokaslr(关闭地址空间随机化,便于调试),例如:linux /boot/vmlinuz-xxx root=/dev/sda1 debug nokaslr。