gpt4 book ai didi

linux - 如何从多核平台中的所有 CPU 获取调用跟踪

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:55 29 4
gpt4 key购买 nike

我需要转储所有 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

使用平台独立包装器 arch_trigger_all_cpu_backtrace()
#include <asm/irq.h>

void dump_all_cpu_stack(void)
{
arch_trigger_all_cpu_backtrace();
}

关于linux - 如何从多核平台中的所有 CPU 获取调用跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258216/

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