加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2020-12-30 14:21:22 所属栏目:Linux 来源:网络整理
导读:我正在尝试生成一个全面的调用图(完成对 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 function
int 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("%ldn",result);
  return 0;
}

我从源代码编译了Cilk库.

解决方法

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

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

--include-external

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

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

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

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读