我正在使用以下命令获取管道列表:
lsof | grep PIPE
Run Code Online (Sandbox Code Playgroud)
我想知道FD列的值是什么意思(第5页http://i.imgur.com/KHczptf.png).我认为,r
和w
平均读取和写入分别,但到底是什么下面的每一个字符,这些装置的数量?
我知道FD意味着文件描述符,我想弄清楚的是列中显示的值是什么意思,比如3r,16w,20r等.
我有一个C二进制文件(可用的源代码)和预定义的工作负载.我想以调用顺序记录所有函数调用及其各自的参数,以及返回值.例如,在下面的代码中:
int myfunc(int value){
return value*2;
}
int main(void){
int i;
i = myfunc(10);
i = myfunc(12);
i = myfunc(20);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它会导致像这样的日志文件:
int main()
int myfunc(10)
myfunc return 20
int myfunc(12)
myfunc return 24
int myfunc(21)
myfunc return 42
main return 0
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用英特尔PIN来完成它,并且它工作得非常好,除了当变量是指针,数组,结构或typedef时.我需要所有变量.
我有源代码,我可以使用调试选项编译它.
有任何想法吗?
手动PS调试是不可行的,因为我的实际工作负载有来自90个不同功能的大约5000个调用.
编辑:操作系统是Arch Linux 64bit