我可以获取objdump --full-contents仅打印原始文本吗?

问题描述

我有一个目标文件,该文件的节包含正确的ASCII(或Latin-1?)文本。所以,如果我写:

$ objdump -s my_file.so --section=.rodata

看起来像这样(仅从中间显示几行,显然很长):

 070a80 656d3b0a 73697a65 5f742073 68617265  em;.size_t share
 070a90 644d656d 50657242 6c6f636b 3b0a696e  dMemPerBlock;.in
 070aa0 74207265 67735065 72426c6f 636b3b0a  t regsPerBlock;.
 070ab0 696e7420 77617270 53697a65 3b0a7369  int warpSize;.si
 070ac0 7a655f74 206d656d 50697463 683b0a69  ze_t memPitch;.i
 070ad0 6e74206d 61785468 72656164 73506572  nt maxThreadsPer
 070ae0 426c6f63 6b3b0a69 6e74206d 61785468  Block;.int maxTh

我的问题:是否可以使objdump仅打印文本而没有行索引和十六进制值?并至少正确打印所有打印字符(例如0x0a的换行符)?或者-我是否必须执行大量文本处理以将点与它们的值相关联,用适当的字符替换它们,剪切行前缀,删除人造换行符等?

解决方法

使用xxd

使用xxd可以避免cutawk的出现,这是缺少objdump标志的最佳解决方案。

将格式化的十六进制转储保存到文件temp中,我们可以将结果通过管道传输到xxd -r(期望使用这种格式的十六进制转储):

$ cat temp | xxd -r
em;
size_t sharedMemPerBlock;
int regsPerBlock;
int warpSize;
size_t memPitch;
int maxThreadsPerBlock;
int maxTh

如果您需要传入没有行号或ascii表示形式的十六进制字符串,请使用xxd -r -p

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...