Некоторые потоки в моем приложении заполнены оптимизированными функциями, и когда я отлаживаю приложение, gdb не может отследить эти функции. Но я посмотрел на ассемблер и могу частично размотать стек вручную до кадра предыдущей функции, выполнив что-то вроде:
set $old_ra = $ra
set $old_sp = $sp
set $ra = *(unsigned long*)($sp+28)
set $sp = $sp + 48
bt
set $ra = $old_ra
set $sp = $old_sp
Это отлично работает, если я выполняю отладку в режиме реального времени, и успешно показывает полную обратную трассировку. Я хочу быть в состоянии сделать то же самое в автономном режиме, глядя на дамп ядра. Понятно, что концепция выковывать регистр не имеет смысла в дампе ядра, но есть ли способ сказать gdb «просто использовать это значение для регистра», чтобы я мог сделать аналогичный возврат?