我可以让 objdump --full-contents 只打印原始文本吗?
Can I get objdump --full-contents to only print the raw text?
我有一个目标文件,其中有一个部分包含正确的 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 将避免 cut
ing 和 awk
ing,并且是缺少 objdump
标志的最佳解决方案。
将格式化的 hexdump 保存到文件 temp
,我们可以将结果通过管道传输到 xxd -r
,(需要这样的格式化 hexdump):
$ cat temp | xxd -r
em;
size_t sharedMemPerBlock;
int regsPerBlock;
int warpSize;
size_t memPitch;
int maxThreadsPerBlock;
int maxTh
如果您需要传入不带行号或 ascii 表示的十六进制字符串,请使用 .
我有一个目标文件,其中有一个部分包含正确的 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 将避免 cut
ing 和 awk
ing,并且是缺少 objdump
标志的最佳解决方案。
将格式化的 hexdump 保存到文件 temp
,我们可以将结果通过管道传输到 xxd -r
,(需要这样的格式化 hexdump):
$ cat temp | xxd -r
em;
size_t sharedMemPerBlock;
int regsPerBlock;
int warpSize;
size_t memPitch;
int maxThreadsPerBlock;
int maxTh
如果您需要传入不带行号或 ascii 表示的十六进制字符串,请使用