1.概述
本文通过分析linux本地动态库程序调试中,在动态库设置断点的过程,理清调试器在动态库调试的机制。
2. 原理分析
注意,此时断点的属性是pending,而不是对应的文件名、行号、地址;接下来调试器执行run命令,由此开始,直到程序遇到child_fun断点的过程中涉及到图4所述的模块。调试器进程与动态程序进程之间借助于内核的信号机制进行通信(这里使用SIGTRAP信号),动态库程序在内核创建好进程之后,整个程序的入口地址是动态链接器的起始地址_start()函数处。
下面介绍一下gdb动态库调试的框架图。