strings
1 问题
比如我们在一个C文件里面或者C++文件里面添加了日志打印字符串***,但是实际上没打印,我们会怀疑这个打印字符串有没有加到so里面去,那我们有什么办法呢?用strings命令
strings ***.so | grep 关键字
strings命令是在对象文件或者二进制文件中查找可打印的字符串
我们一般使用
strings命令是在对象文件或者二进制文件中查找可打印的字符串
2 介绍使用过程
#include <stdio.h>
int sub(int x, int y)
{
return x - y;
}
int main()
{
int x = 5, y = 2;
int result = sub(x, y);
printf("result is %d\n", result);
printf("hello chenyu");
return 1;
}
我们直接用strings string.c文件效果如下
1111deMacBook-Pro:str a1111$ strings strings.c
#include <stdio.h>
int sub(int x, int y)
return x - y;
int main()
int x = 5, y = 2;
int result = sub(x, y);
printf("result is %d\n", result);
printf("hello chenyu");
return 1;
我们可以看到打印这个文件的基本信息了
然后我们生产之执行文件
gcc -g string.c -o str
2)生成这个文件的静态文件libstr,我们在用strings查看
ar rcs libstr.a str
1111deMacBook-Pro:str a1111$ strings libstr.a
__mh_execute_header
_main
_sub
str 1546
result is %d
hello chenyu
我们这里看到了main函数 sub函数 和部分字符串打印
3 )我们生产动态链接库
gcc -shared -fPIC -o libstr.so strings.c
我们直接strings libstr.so
1111deMacBook-Pro:str a1111$ strings libstr.so
result is %d
hello chenyu
我们可以看到打印除了部分打印,如果我们在so文件里面有打印,我们直接strings **.so | grep 关键字 就行
3 对比nm命令
然后我们对比下nm命令
1111deMacBook-Pro:str a1111$ nm libstr.so
0000000000000f10 T _main
U _printf
0000000000000ef0 T _sub
U dyld_stub_binder
我们用nm命令一般是查看so里面的函数
4 总结
如果我们要查看so文件里面的函数,我们一般用nm命令,如果我们要查看so里面的可打印字符串,我们一般使用strings命令
相关阅读
SRVCTL Add添加数据库或实例的配置信息。在增加实例中,与-i一起指定的名字应该与INSTANCE_NAME 和 ORACLE_SID参数匹配。srvctl ad
统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数。 相关系数:考察两个事物(在数
很多人淘宝购物在退货的时候,遇到过急速退款的情况吧,这就是因为你有良好的信用评价,信用评价是买家和卖家相互评论,天猫买家的信用评
SM:Sadism & Masochism (性)虐待狂与受虐狂
SM:Sadism & Masochism (性)虐待狂与受虐狂虐恋一词英文为Sadomasochism,是施虐倾向(Sadism)和受虐倾向(Masochism)二者的合成词。
卖家每得到一个“好评”,就能够积累1分,中评不得分,差评扣一分。250分以内的积分用红心来表示,251分到1万分用蓝色钻石来表示,1万零1