发布时间:2013-06-10 17:18:08
出现异常的可能原因是exec file的symbol不存在或不匹配。根据之前对x86栈帧布局图的分析,bp-ra(即栈帧基址-返回地址)必定在栈帧顶端的固定位置,可以利用这个分布特点进行栈回溯。从当前的bp0开始,找到上一个bp1=*bp0,ra1=*(bp这0 + 4),ra1就是调用函数的地址。继续回溯,bp2=*bp1,ra2=*(bp1 + 4),ra2应该是再上一级调用函数的地址。如此循环,同时用info symbol $ra* 打印出来每一级函数,就找到实际的call trace信息了。
......【阅读全文】
发布时间:2013-06-10 17:18:03
一个函数通常会定义一些局部变量,我们知道这些局部变量是在当前函数的栈帧上来分配,那么栈上变量的分配顺序,是不是跟局部变量的定义顺序一样呢?一次偶然的coredump,证明了至少在x86中未必如此。......【阅读全文】