在二进制文件上使用 PIN API 中提供的名为strace.cpp的代码示例应该提供一个输出文件,其中包含使用的所有系统调用以及一些其他信息。我用作测试的二进制文件是一个简单的 C 二进制文件,其中包含一个getpid()
系统调用,这是第 20 个系统调用。源代码如下所示:
struct {
unsigned int pid;
char data [16];
}test;
void foo(){
printf("In Foo!\n");
char *p = "hello world";
test.pid = getpid();
strcpy(test.data,p);
}
int main()
{
printf("Hello World!\n");
foo();
return 0;
}
PIN 工具完成后,工作目录中有一个名为strace.out的输出文件,其中包含所有系统调用信息。该文件包含大约 28 个不同的系统调用,但没有一个被标记为 20 或getpid()
系统调用。系统调用号是每行冒号后面的第一个数字。