博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数调用可视化
阅读量:5256 次
发布时间:2019-06-14

本文共 1454 字,大约阅读时间需要 4 分钟。

1 #include 
2 #include
3 4 /* Function prototypes with attributes */ 5 void main_constructor( void ) 6 __attribute__ ((no_instrument_function, constructor)); 7 8 void main_destructor( void ) 9 __attribute__ ((no_instrument_function, destructor));10 11 void __cyg_profile_func_enter( void *, void * ) 12 __attribute__ ((no_instrument_function));13 14 void __cyg_profile_func_exit( void *, void * )15 __attribute__ ((no_instrument_function));16 17 18 static FILE *fp;19 20 21 void main_constructor( void )22 {23 fp = fopen( "trace.txt", "w" );24 if (fp == NULL) exit(-1);25 }26 27 28 void main_destructor( void )29 {30 fclose( fp );31 }32 33 34 void __cyg_profile_func_enter( void *this, void *callsite )35 {36 fprintf(fp, "E%p\n", (int *)this);37 }38 39 40 void __cyg_profile_func_exit( void *this, void *callsite )41 {42 fprintf(fp, "X%p\n", (int *)this);43 }

constructor、destructor作用于main方法,即程序开始与退出时。

enter、exit作用于每个方法,在每个方法执行与退出时被调用。

上述代码为instrument.c文件代码。

 

2、将instrument加入程序源码,产生执行路径

  a、将instrument.c拷入程序源码的src文件夹中

  b、修改makefile文件(之前可以执行./configure --prefix=。。。修改安装目录)

    --将CFLAGS 加入-g -finstrument-functions 

    --将instrument.c加入 程序名_SOURCE变量

    --将instrument.$(OBJEXT) 加入am_程序名_OBJECTS变量

    --src、外层文件夹中的makefile都要改,一般外层文件夹中的makefile只改CFLAGS

  c、make

  d、make install

 

3、有可能会出现问题,,此时将src文件夹中的CFLAGS选项的 -O2去掉即可(segmentation fault错误)

 

转载于:https://www.cnblogs.com/aldin/p/3924244.html

你可能感兴趣的文章
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
子网划分讲解及练习(一)
查看>>
c# 文件笔记
查看>>
第一页 - 工具的使用(webstorm)
查看>>
Linux 进程资源用量监控和按用户设置进程限制
查看>>
IE浏览器整页截屏程序(二)
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
adidas crazylight 2018 performance analysis review
查看>>
typeset shell 用法
查看>>
python 之 循环语句
查看>>