作为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 ./executablebreak - 设置断点run - 启动程序backtrace - 查看调用栈print - 打印变量值next/step - 单步执行Valgrind
valgrind --tool=memcheck ./programSystemTap
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 80Wireshark - 图形化网络协议分析
nc (netcat) - 网络调试瑞士军刀
curl - HTTP请求调试
curl -v http://example.comkprobes - 动态内核跟踪
crash工具 - 分析内核转储
ftrace - 内核函数跟踪
echo function > /sys/kernel/debug/tracing/current_tracerKGDB - 内核源码级调试
核心转储分析
ulimit -c unlimitedgdb ./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系统下问题诊断和解决的效率。根据具体问题选择合适的工具组合,往往能事半功倍。