首页 > 数据库技术 > 详细

gdb跟踪应用程序原理浅析

时间:2016-02-01 15:29:17      阅读:188      评论:0      收藏:0      [点我收藏+]

了解了应用程序的编译运行原理后,下面看一看gdb能追踪到进程的原理:

gdb运行在应用态,基本用法是gdb ./hello,在gdb程序中拉起了hello程序,hello进程相当于gdb的子进程,gdb是hello进程的父进程。

一)断点的原理

gdb使用b backpoint在可执行文件中加入断点-------------在可执行文件对应的backpoint处,加入了INT3 指令,该指令是触发中断,内核收到此中断后,将当前进程暂停执行,并将中断转为软件信号SIGTRAP,发给hello进程。

子进程被父进程使用ptrace个跟踪后,子进程的信号会被父进程获取,这样gdb获得这个信号后,暂停应用程序,可查看调用栈。

查看调用栈有两种方法:

1)glibc中的backtrace函数,获取当前线程的调用堆栈。

应用程序的SIGSEGV信号,可以自定义捕获,在自定义函数中调用backtrace函数,打印调用栈。

2)直接使用_asm_获得ebp寄存器的值,直接读取。

 

gdb跟踪应用程序原理浅析

原文:http://www.cnblogs.com/minihaohao/p/5175035.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!