![]() |
1
1
我发现 oprofile 在这种情况下,要比gprof更好地进行分析。这个 reports from oprofile 更全面。我用ifndef配置文件从C扩展编译了导致SEG错误的Ruby部分(并非所有部分都是),并用非Ruby代码替换了它们。我在扩展本身中编写了一个main()例程来调用扩展中的函数。然后我设置了一个makefile,将扩展编译为一个定义了profile的C程序。然后我 installed oprofile on Ubuntu . 写了这个剧本。
编译了我的程序,并执行了上面的脚本,该脚本通过“opreport”命令提供如下输出:
这里是:最大的使用者是函数levenshtein()。接下来是另一个命令,生成用源代码和每行的执行计数/时间注释的反汇编输出。如下所示(计数/次数在每行执行的左侧):
|
![]() |
2
1
你可以做得比 GPROF . 考虑 stackshots . 你可以用 堆栈 , LSStad (如果可以),或者在调试器下手动暂停。 Here's a short intro to the technique. |
![]() |
3
0
您可以通过分析器运行Ruby解释器本身。如果这太多,编写一个小的C程序,加载共享库并调用其导出的函数。然后分析那个C程序。它可以避免维护库的两个版本。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |