博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC(-pg) profile mcount | ftrace基础原理
阅读量:2031 次
发布时间:2019-04-28

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

GCC(-pg) profile mcount
荣涛
2021年5月12日
  • gcc的profile特性,gcc-pg 选项将在每个函数的入口处加入对mcount的代码调用;
  • 如果ftrace编写了自己的mcount stub函数,则可借此实现trace功能;
//$ cat foo.c void foo(void) {
int a = 1;}

编译:

gcc foo.c -pg -S -o foo-pg.sgcc foo.c -pg -c -o foo-pg.ogcc foo.c -S -o foo.sgcc foo.c -c -o foo.o

foo.s文件:

;$ cat foo.s foo:	pushq	%rbp	movq	%rsp, %rbp	movl	$1, -4(%rbp)	popq	%rbp	ret

foo-pg.s文件:

;$ cat foo-pg.s foo:	pushq	%rbp	movq	%rsp, %rbp	subq	$16, %rsp	call	mcount	movl	$1, -4(%rbp)	leave	ret

查看两个.o文件

[rongtao@localhost demo]$ readelf -s foo.o Symbol table '.symtab' contains 9 entries:   Num:    Value          Size Type    Bind   Vis      Ndx Name     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND      1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS foo.c     2: 0000000000000000     0 SECTION LOCAL  DEFAULT    1      3: 0000000000000000     0 SECTION LOCAL  DEFAULT    2      4: 0000000000000000     0 SECTION LOCAL  DEFAULT    3      5: 0000000000000000     0 SECTION LOCAL  DEFAULT    5      6: 0000000000000000     0 SECTION LOCAL  DEFAULT    6      7: 0000000000000000     0 SECTION LOCAL  DEFAULT    4      8: 0000000000000000    13 FUNC    GLOBAL DEFAULT    1 foo[rongtao@localhost demo]$ readelf -s foo-pg.o Symbol table '.symtab' contains 10 entries:   Num:    Value          Size Type    Bind   Vis      Ndx Name     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND      1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS foo.c     2: 0000000000000000     0 SECTION LOCAL  DEFAULT    1      3: 0000000000000000     0 SECTION LOCAL  DEFAULT    3      4: 0000000000000000     0 SECTION LOCAL  DEFAULT    4      5: 0000000000000000     0 SECTION LOCAL  DEFAULT    6      6: 0000000000000000     0 SECTION LOCAL  DEFAULT    7      7: 0000000000000000     0 SECTION LOCAL  DEFAULT    5      8: 0000000000000000    22 FUNC    GLOBAL DEFAULT    1 foo     9: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND mcount

转载地址:http://hivaf.baihongyu.com/

你可能感兴趣的文章
OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
查看>>
背景提取算法——帧间差分法、背景差分法、ViBe算法、ViBe+算法
查看>>
“王大锤の非诚勿扰” —— Spring IoC / DI 思想详述
查看>>
服务假死问题解决过程实记(三)——缓存问题优化
查看>>
Individual Homework -----questions about the text book by 张静
查看>>
[初心者适用]如何为代码编写基本的文档
查看>>
Daily Scrum 第五天!
查看>>
DailyScrum beta 第三天!
查看>>
骚博记, 又名: building another twitter
查看>>
SS Test Plan -- 为游戏量身裁剪的测试计划
查看>>
《Icon—Steve Jobs》读后感--寻找你眼中的乔布斯
查看>>
Daily scrum beta 第五天!
查看>>
SouthSeven团队项目Screaming Drummer alpha迭代事后分析
查看>>
Daily Scrum Beta 第六天!
查看>>
vim技巧实战——关于宏记录的一个例子
查看>>
Daily scrum beta 第八天!
查看>>
Daily Scrum Beta 第七天!
查看>>
Daily scrum beta 第十天!
查看>>
Daily scrum beta 第九天!
查看>>
Kungfu Stonie来袭,你hold的住吗?!
查看>>