美文网首页
Linux 程序符号__gmon_start__

Linux 程序符号__gmon_start__

作者: dcharles | 来源:发表于2016-07-18 17:14 被阅读799次

使用readelf -r 查看elf文件的时候,发现在rel.dyn表中有一个gmon_start符号(symbol)。

Screenshot from 2016-07-18 16-55-00.png

google了一下这个符号表示什么,就找到了这篇文章What is gmon_start symbol?
大致的意思就是说call_gmon_start函数初始化gmon profiling system,这个系统是在编译程序时加上-pg选项,程序通过gprof可以输出函数调用等信息。 gmon_start 指向 gmon初始化函数, 该函数开始记录 profiling信息并在 atexit()中注册了一个清理函数。
上面提到的函数和功能都是在glibc中实现,下面看一下glibc的源码,在sysdeps/generic/initfini.c中

static void
call_gmon_start(void)
{
   extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
   void (*gmon_start) (void) = __gmon_start__;
 
   if (gmon_start)
    gmon_start ();
}

所以gmon_start会出现在重定向符号表中。
call_gmon_start的调用是在_inti即.init段的代码中。

至于上面提到的profile系统的作用和gmon_start 函数的作用请参考C++ Profiler工具之初体验

相关文章

  • Linux 程序符号__gmon_start__

    使用readelf -r 查看elf文件的时候,发现在rel.dyn表中有一个gmon_start符号(symbo...

  • python3 脚本声明解释

    python3程序(#!)符号 python程序的开头一般都有#!符号。这个符号是linux/unix系统中的sh...

  • Linux设备驱动程序学习----4.模块的内核符号表

    模块的内核符号表 更多内容请参考Linux设备驱动程序学习----目录 1. 内核符号表   在模块的装载中,in...

  • Linux程序后台运行实践

    通常我们在使用linux时,会经常要把一个程序放到后台运行,这时候就需要在程序的最后使用【&】符号,但是当直接关闭...

  • Linux常用命令目录

    命令分类链接Linux特殊符号与常用快捷键Linux特殊符号与常用快捷键Linux常用命令-帮助和系统内置类Lin...

  • 测试

    [ Linux中经常使用[来进行测试,[是test的符号链接。[是一个应用程序,需要注意的是[必须被空格包围,否则...

  • linux 管道

    符号表示 |和管道特别形象。 作用 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序...

  • 第三节 用户及文件权限管理

    一、linux用户管理 linux中管理员帐户:root 超级用户 提示符号: # ...

  • linux常见符号

    重定向符号 在shell脚本中有两种常见的重定向符号 > 和 >> > 符号 作用: 演示: 查看文件内容 使用...

  • linux符号含义

    # 井号 (comments) #管理员$普通用户 脚本中 #!/bin/bash#!/bin/sh 井号也常出现...

网友评论

      本文标题:Linux 程序符号__gmon_start__

      本文链接:https://www.haomeiwen.com/subject/fgopjttx.html