linux – 使用GCC和埃及生成全面的调用图

linux – 使用GCC和埃及生成全面的调用图,第1张

概述我正在尝试生成一个全面的调用图(完成对 Linux,运行时,批次的低级调用). 我已经使用“-fdump-rtl-expand”静态编译了我的源文件并创建了RTL文件,我将其传递给名为Egypt的PERL脚本(我相信是Graphviz / Dot)并生成了调用图的PDF文件.这完美无缺,完全没问题. 除此之外,有些调用显示为内置的库.我当时想看看是否有一种方法可以将调用图打印为不是打印出库中的实际 我正在尝试生成一个全面的调用图(完成对 Linux,运行时,批次的低级调用).

我已经使用“-fdump-rtl-expand”静态编译了我的源文件并创建了RTL文件,我将其传递给名为Egypt的PERL脚本(我相信是Graphviz / Dot)并生成了调用图的pdf文件.这完美无缺,完全没问题.

除此之外,有些调用显示为内置的库.我当时想看看是否有一种方法可以将调用图打印为不是打印出库中的实际调用?

如果问题不清楚,请告诉我.

http://i.imgur.com/sp58v.jpg

基本上,我试图避免调用图生成<内置>

有没有办法做到这一点 ?

——–代码———

#include <cilk/cilk.h>#include <stdio.h>#include <stdlib.h>unsigned long int t0,t5;unsigned int NOSPAWN_THRESHolD = 32;int fib_nospawn(int n){  if (n < 2)     return n;  else     {      int x = fib_nospawn(n-1);      int y = fib_nospawn(n-2);      return x + y;    }}// spawning fibonacci functionint fib(long int n){  long int x,y;  if (n < 2)     return n;  else if (n <= NOSPAWN_THRESHolD)    {      x = fib_nospawn(n-1);      y = fib_nospawn(n-2);      return x + y;    }  else     {      x = cilk_spawn fib(n-1);      y = cilk_spawn fib(n-2);      cilk_sync;      return x + y;    }}int main(int argc,char *argv[]){  int n;  long int result;  long int exec_time;  n = atoi(argv[1]);  NOSPAWN_THRESHolD = atoi(argv[2]);  result = fib(n);  printf("%ld\n",result);  return 0;}

我从源代码编译了cilk库.

解决方法 我可能已经找到了问题的部分解决方案:

您需要将以下选项传递给埃及

--include-external

这产生了一个稍微全面的调用图,尽管仍然有“可见

http://i.imgur.com/GWPJO.jpg?1

任何人都可以建议我在调用图中获得更多深度吗?

总结

以上是内存溢出为你收集整理的linux – 使用GCC和埃及生成全面的调用图全部内容,希望文章能够帮你解决linux – 使用GCC和埃及生成全面的调用图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存