通过/var/log/message看后端错误

关注关键字段:如 segfault、oom、socket 、kernel等

Segmentation Fault

Jan 23 09:09:40 localhost kernel: worker-0[29016]: segfault at 7f52943ff000 ip 00007f529a102c3c sp 00007f52957e1d38 error 4 in libc-2.17.so[7f5299fa8000+1c2000]
Jan 23 12:17:48 localhost kernel: worker-0[29163]: segfault at 7fcaadbff000 ip 00007fcab37ccc28 sp 00007fcaaeee1d38 error 4 in libc-2.17.so[7fcab3672000+1c2000]
  • 可能原因:
  • 空指针解引用。
  • 数组越界。
  • 使用未初始化的指针。
  • 释放了已经释放的内存。
  • 动态库加载问题(如缺少符号或库版本不匹配)。
  • 分析方法
    结合日志和代码位置:
    日志中的 ip 是指令指针,sp 是栈指针。
    使用 addr2line 将 ip 地址转换为代码位置:
addr2line -e your_program 0x00007ffd1234

输出会显示对应的源码文件和行号。(但如果程序编译时没有-g添加调试信息,可能无法显示行号;如果message中报错的是动态库,这种方法也不适用,只能开启coredump分析)

Killed by OOM

Jan 24 10:20:50 hostname kernel: Out of memory: Kill process 12345 (your_program) score 345 or sacrifice child
Jan 24 10:20:50 hostname kernel: Killed process 12345 (your_program), UID 1000, total-vm:123456kB, anon-rss:56789kB

Library/Dynamic Linking Errors

Jan 24 10:25:10 hostname your_program[12345]: error while loading shared libraries: libmylib.so.1: cannot open shared object file: No such file or directory
  • 可能原因
  • 动态库文件缺失或路径配置错误。
  • 动态库版本不匹配。
  • 分析方法
    1、检查库文件路径:
ldconfig -p | grep libmylib

2、查看程序的依赖库:

ldd your_program

检查输出中是否有 not found。

posted @ 2025-01-24 15:43  LdreamerD  阅读(87)  评论(0)    收藏  举报