作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要转储所有 CPU 的 CPU 回溯。
在 linux 中我们有 dump_stack
可以用来转储当前 cpu 的堆栈。
我的要求是打印在所有 CPU(在我的例子中是 4 个 CPU)上运行的进程的调用堆栈。我们该怎么做?是否有为此预构建的 API?
最佳答案
为了在其他 CPU 上触发某些东西,平台使用 IPI。
在 arm 上执行此操作的逻辑定义在 smp_send_all_cpu_backtrace()
-> 文件 - kernel/arch/arm/kernel/smp.c
这会将 IPI 发送到所有 cpu 以转储堆栈。如果您想在代码中使用它,请通过包含 asm/irq.h
#include <asm/irq.h>
void dump_all_cpu_stack(void)
{
arch_trigger_all_cpu_backtrace();
}
关于linux - 如何从多核平台中的所有 CPU 获取调用跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258216/
我是一名优秀的程序员,十分优秀!