作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 strace
来了解二进制程序如何使用内存。
但是,strace
的默认输出试图更加用户友好,将任何 char *
缓冲区打印为相应的字符串。
read(3, "Tell me, Muse, of that man of ma"..., 4096) = 270
有没有办法告诉 strace
在其内容旁边打印字符串的实际地址?
如果不可能同时拥有两者,只打印字符串的地址而不是其截断的内容也是可以的。
最佳答案
-e raw=read 应该已经做你想做的了。应该不需要修改源。
broadway@creepspread:~% strace -e raw=read ls 2>&1|grep ^read
读取(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
关于linux - 如何使字符串参数的 strace 打印地址而不仅仅是它们的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819011/
我是一名优秀的程序员,十分优秀!