gdb在调试程序的时候,打个断点,他是怎么解析debug信息得出对应源码的行号的?

elitepei 发布于 2011/09/25 12:32
阅读 833
收藏 0
GDB
我是用readelf -wl  这些命令查看程序,但是输出的信息看不懂,gdb是怎么解析程序,然后把断点打上的
加载中
0
Lunar_Lin
Lunar_Lin

    应该是  在debug信息里的 关于每个函数符号 都加一个结构, 这个结构里,表明了每一行的代码距离函数指针(函数机器代码开始处)的偏移位置(机器码是编译器生成的,这个对它来说很easy). 调试程序时,每个函数指针位置的定位信息都是清楚的,再根据行号加上偏移, 设置硬件断点寄存器为该地址值, 或者设置软件断点即可 (修改该处机器码,让PC在这里跳转到调试器控制部分.)

    没研究过debug信息, 但觉得识别这个 应该不太麻烦.

elitepei
elitepei
恩,不错应该是这样
返回顶部
顶部