作为IT工程师,掌握Linux系统的调试技巧和工具是必备技能。以下是一份全面的Linux调试指南:
日志分析
/var/log/messages
, /var/log/syslog
/var/log/
下对应应用目录journalctl
查看systemd日志:journalctl -xe -u service-name
系统状态监控
top
/htop
- 实时进程监控vmstat
- 虚拟内存统计iostat
- I/O统计netstat
/ss
- 网络连接统计dmesg
- 内核环形缓冲区消息进程调试
strace
- 跟踪系统调用和信号ltrace
- 跟踪库函数调用lsof
- 列出打开的文件和进程GDB (GNU Debugger)
gdb ./executable
break
- 设置断点run
- 启动程序backtrace
- 查看调用栈print
- 打印变量值next
/step
- 单步执行Valgrind
valgrind --tool=memcheck ./program
SystemTap
stap -e 'probe syscall.open { printf("%s %s\n", execname(), filename) }'
perf
perf stat
- 统计事件perf record
/perf report
- 记录和分析性能数据perf top
- 实时性能监控eBPF工具集
bpftrace
- 高级跟踪语言bcc
工具集 - 各种现成的性能分析工具tcpdump - 网络包捕获分析
tcpdump -i eth0 -n port 80
Wireshark - 图形化网络协议分析
nc (netcat) - 网络调试瑞士军刀
curl - HTTP请求调试
curl -v http://example.com
kprobes - 动态内核跟踪
crash工具 - 分析内核转储
ftrace - 内核函数跟踪
echo function > /sys/kernel/debug/tracing/current_tracer
KGDB - 内核源码级调试
核心转储分析
ulimit -c unlimited
gdb ./executable core
环境变量调试
LD_DEBUG=all ./program
- 调试动态链接器MALLOC_CHECK_=1 ./program
- 检测内存分配问题容器调试
nsenter
- 进入容器命名空间docker exec -it container /bin/bash
性能瓶颈定位
perf
或strace -c
找出耗时最长的系统调用vmstat
和iostat
识别I/O瓶颈掌握这些工具和技巧,可以大大提高Linux系统下问题诊断和解决的效率。根据具体问题选择合适的工具组合,往往能事半功倍。