Skip to content

反向推栈 #2

Description

@tfewfew

这是第一个项目。

背景

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions