2009-09-17 3 views
1

В программе есть два стека: один создается ОС, а второй создается самой программой для запуска с ней некоторого кода.Переключение между несколькими стеками в gdb 6.3

Когда программа вылетает во втором стеке, я хочу переключиться на главный стек в gdb и увидеть обратную трассировку. Является ли это возможным?

Я попытался сохранить rsp переменной и изменить ее после сбоя, но в результате обратная трасса была неправильной. Я думаю, что gdb не может различать кадры в стеке.

ответ

0

Если у вас есть два потока с двумя стеками, вы можете запросить поток через «информационные потоки». После того, как вы узнаете, какой стек потока вы хотите увидеть, выберите его с помощью команды «thread». Поместите номер потока после команды.

Тогда вам нужно только запросить стэк «BT»

+0

Нет, нет нити, программа ведет себя как JIT, и запускается программа составлена ​​внутри него. Поэтому вопрос заключается в том, как я могу собрать информацию о содержимом стека программных вызовов во время выполнения и как передать его в GDB после сбоя, чтобы восстановить основной стек. – user174916

Смежные вопросы