linux - 如何在异常时检索寄存器值?
问题描述
根据文档,对于 Arm v7a(32 位)平台,当异常被触发时,大多数寄存器都存储在称为内核模式堆栈的东西中。但是,我没有找到任何有关如何从异常处理程序本身访问此堆栈的文档。例如,我可能有
static void sighandlerfunc(int signo, siginfo_t *si, void *uc) {
DEBUG("at time of exception, pc:[%x],lr:[%x],sp:[%x],fp:[%x]",
si->si_addr, ??, ??, ??, ??)
}
void register_sa() {
...
sa.sa_flags = SA_SIGINFO|SA_RESTART;
sa.sa_sigaction = sighandlerfunc;
sigemptyset(&sa.sa_mask);
sigaction(SIGVTALRM, &sa, NULL);
}
我如何从异常处理程序中获取这些寄存器的值?
解决方案
推荐阅读
- javascript - 如何将自定义道具传递给道具?
- java - Spring不接受多部分文件列表:java.lang.NoSuchMethodException:org.springframework.web.multipart.MultipartFile
- python - 使用图像处理检测车轮的转速
- spring - Spring MVC文件上传到项目目录
- python - 你将如何获得某人的 UUID?
- ios - 为什么苹果测试应用程序时不发送身份验证标头?
- react-native - 无法从不同组件 react-navigation version-5 的函数体内更新组件
- c++ - c++ propper 重写 new[] 和 delete[]
- sql - 合并时间表行,开始时间和结束时间之间没有间隔
- sql - 如何优化此 SQL 查询