我正在尝试使用strace
来了解二进制程序如何使用内存。
然而, strace
的默认输出,为了更加友好,打印所有char *
缓冲区作为相应的string。
read(3, "Tell me, Muse, of that man of ma"..., 4096) = 270
有没有办法告诉strace
打印其内容旁边的string的实际地址?
如果两者都不可能,只打印string的地址而不是截断的内容也是可以的。
您可以下载strace
的源代码,并将所有这些tprintf("%s", ...)
为tprintf("%p", ...)
,并构建strace
的本地副本。
-e raw =阅读应该做你想要的。 应该不需要修改源代码。
百老汇@ creepspread:〜%strace -e raw =读取ls 2>&1 | grep ^读
读(0x3,0x7fff5ea52e78,0x340)= 0x340
读取(0x3,0x7fff5ea52e48,0x340)= 0x340
读(0x3,0x7fff5ea52e18,0x340)= 0x340
读(0x3,0x7fff5ea52de8,0x340)= 0x340
读(0x3,0x7fff5ea52ca8,0x340)= 0x340
读(0x3,0x7fff5ea52c48,0x340)= 0x340
读(0x3,0x7fff5ea52c18,0x340)= 0x340
读(0x3,0x7fef1433f000,0x400)= 0x136
读取(0x3,0x7fef1433f000,0x400)= 0