在 Linux 下,strings 命令常用于从二进制文件、core 文件、日志或内存镜像中提取可打印字符串,从而帮助定位错误(尤其是程序崩溃、段错误、异常退出等场景)。下面按常见使用场景说明如何用 strings 定位错误。
strings 文件名
示例:
strings ./a.out
作用:
打印二进制文件中所有可打印字符串(如函数名、路径、错误提示等)。
ulimit -c unlimited
./your_program
产生:
core
strings core | less
查找:
NULL, assert failed)strings ./app | grep -i error
strings ./app | grep -i fail
常用于:
strings core | grep -i "ELF"
或更精确:
file core
确认 core 是哪个程序产生的。
strings libxxx.so | grep main
strings libxxx.so | grep init
适用于:
strings memory.dump | grep -i panic
strings log.bin | less
strings -t x file
或
strings -t d file
示例:
strings -t x a.out | grep main
可用于配合 gdb 或 objdump。
strings -n 6 file
过滤短噪声。
strings -e l file # 16-bit little endian
strings -e B file # 32-bit big endian
strings core | grep -i "cannot"
gdb ./app core
先看 backtrace,再用 strings 辅助确认上下文。
objdump -s -j .rodata app
✅ 程序崩了
→ 看 core
→ strings core
→ 找路径 / 错误串 / 模块名
✅ 不知道程序干了什么
→ strings binary
→ 找 URL / 文件路径 / 日志格式
✅ 程序被 strip
→ strings 是唯一能看的东西之一
如果你有具体错误场景(比如 core 文件、某次崩溃、某服务异常),可以把现象贴出来,我可以帮你写针对性的 strings 命令。