免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 深入跟踪 Hello World 执行(12)

深入跟踪 Hello World 执行(12)

时间:2012-04-08 14:21来源:未知 整理:寂涯网络 点击:


.init:080482A1                  add      ebx, 1D54h
.init:080482A7                     mov      edx, ds:(  gmon_start  _ptr -
8049FF4h)[ebx]
.init:080482AD                  test     edx, edx
.init:080482AF                  jz       short loc_80482B6
.init:080482B1                  call
.init:080482B6
 _gmon_start   
.init:080482B6 loc_80482B6:                                   ; CODE XREF:
_init_proc+1B j
.init:080482B6                  call     frame_dummy
.init:080482BB                  call
do_global_ctors_aux
init:080482C0                  pop      eax
.init:080482C1                  pop      ebx
.init:080482C2                  leave
.init:080482C3                  retn
.init:080482C3 _init_proc         endp
我们看到它又调用了.     gmon_start、frame_dummy、  do_global_ctors_aux.这三个
函数的作用中,一个是 gpronf 检查函数会用的到,我们编译的时候加-pg 即可设置,然后
运行会自动生成 gmou.a 文件,对函数的调用次数时间等进行记录。Frame 主要是最后调用
call   register_frame_info_base,传入  elf 中.eh_frame 和.bss,对它们进行注册。最
后我们了解下 do_global_ctors_aux,它的作用是分发构造函数。这部分大家可以通过阅
读 glibc 源代码 cus 下进行深入理解。
我们知道 elf结构中有.init和.finit两个节,和  libc_cus_init、 libc_cus_finit
基本是对应的,存放主函数前后执行初始化等。
然后 main 函数我们就不讲了,具体里面 printf 是如何执行等,这些都属于基本的,用 户调用 glibc,系统调用等等。
我 们整理下 我们大 概整理的函 数执行流 程,从 _start 到  libc_start_main,
  libc_start_main 调用__libc_csu_init、main、__libc_csu_finit,  libc_csu_init 调
用   gmon_start、frame_dummy、  do_global_ctors_aux.大概就是这样一个流程。
 

本页地址 http://www.jybase.net/biancheng/20120408819.html

百度搜索更多

谷歌搜索更多

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com