如何运行此DTrace脚本来评测我的应用程序?

如何运行此DTrace脚本来评测我的应用程序?,c,scripting,assembly,profiling,dtrace,C,Scripting,Assembly,Profiling,Dtrace,我在网上搜索一些东西来帮助我进行装配线分析。我搜索了一下,在上面发现了一些东西 解决这个问题的方法有两部分;查找特定类型的所有指令(inc、add、shl等)以确定分组,然后确定执行哪些指令并正确求和。第一位很复杂,除非通过反汇编程序分组就足够了。为了计算正在执行哪些指令,Dtrace当然是您在这里的朋友(至少在userland) 做到这一点最好的方法是只开始每个基本块;找到这些将是一个手动过程现在。。。然而,在小型应用中,检测每条指令是可行的。下面是一个例子: 首先,我们正在测试的非常简单的C

我在网上搜索一些东西来帮助我进行装配线分析。我搜索了一下,在上面发现了一些东西

解决这个问题的方法有两部分;查找特定类型的所有指令(inc、add、shl等)以确定分组,然后确定执行哪些指令并正确求和。第一位很复杂,除非通过反汇编程序分组就足够了。为了计算正在执行哪些指令,Dtrace当然是您在这里的朋友(至少在userland)

做到这一点最好的方法是只开始每个基本块;找到这些将是一个手动过程现在。。。然而,在小型应用中,检测每条指令是可行的。下面是一个例子:

首先,我们正在测试的非常简单的C程序:

main()
{
    int i;

    for (i = 0; i < 100; i++)
    getpid();
}

从给出的例子来看,这正是我所需要的。但是我不知道它在做什么,如何保存DTrace程序,如何使用我想要得到结果的代码执行。因此,我打开了它,希望一些具有良好DTrace背景的人能帮助我理解代码,保存它,运行它,并希望得到显示的结果。

如果您只想运行这个特定的DTrace脚本,只需将它保存到.d脚本文件中,并使用如下命令对编译后的可执行文件运行它:

sudo dtrace -s dtracescript.d -c [Path to executable]
其中,您将用脚本文件名替换
dtracescript.d

这假设您将DTrace作为系统的一部分(我运行的是MacOSX,自Leopard之后就有了它)


如果您想知道这是如何工作的,我在不久前写了一篇关于在MacResearch上使用DTrace的两部分教程,可以找到它。

非常感谢!事实上,我对代码的解释特别好奇!我有linux Ubuntu。。。如果DTrace不是ubuntu的一部分,我会安装它……编译后的代码需要任何标志吗?类似于gcc-pg或不一定?@Syntax_Error-DTrace需要出现在内核级别,并且由于许可问题,它似乎不在Linux中:。如果我没记错的话,您的可执行文件不需要任何特殊的编译器设置。至于脚本的作用,我将引导您阅读我链接到的文章,因为我描述了其中的一些语法,并指出了其他资源以获得更详细的信息。
main+0x1:           1
main+0x3:           1
main+0x6:           1
main+0x9:           1
main+0xe:           1
main+0x11:           1
main+0x14:           1
main+0x17:           1
main+0x1a:           1
main+0x1c:           1
main+0x23:         101
main+0x27:         101
main+0x29:         100
main+0x2e:         100
main+0x31:         100
main+0x33:         100
main+0x35:           1
main+0x36:           1
main+0x37:           1
sudo dtrace -s dtracescript.d -c [Path to executable]