Трассировка стека для задачи, отличной от CPU0, с использованием ядра cordump - PullRequest
0 голосов
/ 29 августа 2018

Я учусь отлаживать ядро ​​Linux, используя kdump / kexec (vmcore). Я могу получить coredump ядра Linux, запустив sysrq.

root @ testVM: ~ # echo c> / proc / sysrq-trigger
[57.145290] sysrq: SysRq: вызвать сбой
[57.148126] ==================================================== ==
[57.151953] BUG: KASAN: null-ptr-deref в sysrq_handle_crash + 0x69 / 0xb0
[57.155591] Запись размера 1 по адресу 0000000000000000 по заданию bash / 3887
[57.160443] CPU: 1 PID: 3887 Comm: bash Kdump: загружен Не испорчен 4.18.0-rc3 # 1

Как показано в журнале выше, задача на CPU1 вызвала сбой.

Я могу использовать GDB с файлом vmcore. Я получил следующую трассировку стека с помощью команды bt.

(gdb) bt
# 0 native_safe_halt () в /home/daeryong/workspace/linux/arch/x86/include/asm/irqflags.h:55
# 1 0xffffffff84848eac в arch_safe_halt () в /home/daeryong/workspace/linux/arch/x86/include/asm/paravirt.h:94
# 2 default_idle () в /home/daeryong/workspace/linux/arch/x86/kernel/process.c:500
...

Кажется, что трассировка стека показывает пустую задачу. Таким образом, я предполагаю, что описанная выше трассировка стека предназначена для задачи на CPU0, так как в официальном документе написано, Stack trace for the task on processor 0, register display, and memory display work fine.

Прав ли я до сих пор? А как посмотреть трассировку стека, записывается для задачи на CPU1?

...