-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
这是第一个项目。
背景
这是最近工作中需要搞定的一个问题,在linux的设备上,导出某个指定线程的调用栈(中断安全的情况下。)
1.在开启了O2优化,但是忽略了FP寄存器压栈的前提下,发现程序异常的时候,部分调用栈还是解析不出来,最后定位的原因是LINUX的底层so比如libc.so使用的还是全量的O2优化,因此没有压栈FP寄存器,也就是如果程序正在执行到这些so中的函数时候,就不可解调用栈。
2.linux中通过给指定线程发信号,尝试在信号中断中解析调用栈的时候,发现FP寄存器还有一个问题,就是休眠的线程,FP寄存器存储的信息不是上级栈函数地址,这个时候FP被使用了。
在此前提下,为了获取到指定线程的调用栈,开始进行反向推栈的探索。