在 Linux 下“查错”通常分几种情况:进程起不来、进程卡死、进程崩溃、运行结果不对、资源异常。下面按常见场景给你一套实用排查思路。
./your_program
或
systemctl status your_service
journalctl -xe
ls -l your_program
chmod +x your_program
ldd your_program
如果看到 not found,就是缺库。
ps -ef | grep your_process
top
htop
top -p <pid>
关注:
ps -o pid,stat,cmd -p <pid>
常见状态:
D:不可中断睡眠(通常是磁盘/IO问题)S:睡眠R:运行Z:僵尸进程strace -p <pid>
(非常关键,能看到系统调用卡在哪)
top -H -p <pid>
ps -T -p <pid>
dmesg | tail
常见:
segfault at ...
gdb ./your_program
run
bt
如果是已崩溃的 core:
gdb ./your_program core
bt
ulimit -c unlimited
再运行程序,生成 core 文件。
./program > out.log 2>&1
journalctl -u your_service -f
netstat -antp | grep <pid>
ss -antp
tcpdump -i any port 8080
lsof -p <pid>
ps / top 看进程在不在strace -p pid 看卡哪dmesg 看是否崩溃gdb + core 定位代码如果你能说具体一点,比如:
我可以直接帮你定位问题。