在 Debian(以及一般的 Linux)环境下,strings 是一个非常实用的排查工具,常用于从二进制文件、core 文件、日志、内存镜像中提取可读字符串,帮助定位问题。下面按典型排查场景来说明怎么用。
strings 用来从非文本文件中提取可打印字符序列(默认长度 ≥ 4)。
strings file
常见用途:
如果你有 core 文件:
strings core
结合 gdb:
gdb ./app core
在 strings 输出中找:
strings /usr/bin/xxx | grep -i error
strings /usr/bin/xxx | grep -i failed
常用于:
strings app | grep -E '/etc|/var|/home'
例如:
/etc/app/config.yaml
/var/log/app.log
strings app | grep -i version
strings app | grep -i gcc
strings app | grep -i build
strings app | grep -E '\.so'
结合:
ldd app
strings app | less
重点看:
strings app.log
strings data.bin
strings -n 6 app
strings -t x app # 十六进制
strings -t d app # 十进制
strings -n 8 core | less
strings bin | grep -i "permission denied"
objdump -d app | less
strings app
gdb ./app
(gdb) info proc mappings
问题:程序启动就退,无日志
步骤:
strings app | grep -i error/etc/app.conf not found问题:怀疑版本不对
strings app | grep VERSION
strings 不能还原逻辑,只能看“线索”如果你有具体场景(比如某个程序崩溃、core 文件、服务起不来),可以直接把现象发我,我可以帮你写针对性的 strings 排查命令。