Есть ли в GDB команда, эквивалентная команде WinDbg !process 0 7
?
Я хочу извлечь все потоки в файл дампа вместе с их следами в GDB. info threads
не выводит трассировку стека. Итак, есть ли команда, которая работает?
Есть ли в GDB команда, эквивалентная команде WinDbg !process 0 7
?
Я хочу извлечь все потоки в файл дампа вместе с их следами в GDB. info threads
не выводит трассировку стека. Итак, есть ли команда, которая работает?
Обычно обратная трассировка используется для получения стека текущего потока, но если есть необходимость получить трассировку стека всех потоков, используйте следующую команду.
thread apply all bt
gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
- person Doomsday; 28.03.2018
t a a bt
- person qbolec; 13.03.2020
gdb <binary> <coredump> -ex "thread apply all bt" -ex "detach" -ex "quit" > output.log
, чтобы избежать вопроса от gdb, который блокирует команду, ожидающую ввода.
- person Mariano Paniga; 12.08.2020
Есть ли какая-нибудь команда?
thread apply all where
backtrace
.
- person Daniel Farrell; 28.11.2017
При отладке с несколькими потоками также полезно переключиться на конкретный номер потока и получить трассировку только для этого потока.
Из потоков GNU GDB документация
Для целей отладки GDB связывает свой собственный номер потока - небольшое целое число, назначенное в порядке создания потока - с каждым потоком в вашей программе.
Использование:
info threads
Затем определите нить, которую вы хотите посмотреть.
thread <thread_id>
Наконец, используйте обратную трассировку только для этого потока:
bt
bt all
- на случай, если кто-то нашел это через Google (кто думает GDB == LLDB). - person kennytm   schedule 26.10.2016