gpt4 book ai didi

android - 如何在系统调用(android内核)中转储调用堆栈?

转载 作者:行者123 更新时间:2023-11-29 02:00:50 25 4
gpt4 key购买 nike

我想知道当手机(android)意外重启时谁调用了*sys_reboot*。

有没有办法在 syscall(android 内核)中转储调用堆栈?

最佳答案

如果您只需要一个内核 调用跟踪,您可以通过dump_stack() 获得它。 . panic()称之为,除其他外。 BUG()/BUG_ON() wrappers给它一个更具描述性的消息和一个可选的条件测试。

userland 堆栈跟踪,尤其是符号堆栈跟踪,不能直接从内核中可靠地获得。可以将堆栈内存复制到内核空间并记录内容,或者如果没有优化帧指针,甚至可以启发式地遍历 SP/FP 链接,但要解析符号,它需要访问和解析 ELF 信息。我不确定是否有人将其作为纯粹的内核端实现来完成;一个更简单的解决方案是从您的系统调用 Hook 停止程序,生成附加到它的用户空间调试器,提取堆栈跟踪,完成后继续程序。

查看此 SO 帖子,call_usermodehelper / call_usermodehelperpipe usage了解如何做到这一点。

另请参阅此 SO 发布:How to print the userspace stack trace in linux kernelspace对同一问题的另一个引用。

关于android - 如何在系统调用(android内核)中转储调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com