GDB имеет несколько приятных функций для работы с потоками. Один из моих любимых - thread apply
. Это позволяет вам запускать одну и ту же команду для нескольких потоков.
Например, если вы хотите получить обратный след всех потоков, вы можете использовать это:
thread apply all where
Чтобы разбить это, команда начинается с thread apply
.
Далее идет список тем. Здесь я использовал ключевое слово all
, чтобы применить это к каждому потоку в процессе. Вы также можете использовать разделенный пробелами список идентификаторов потоков GDB (thread apply 1 2 3 command
).
И, наконец, приходит команда выполнить. Я использовал where
, который показывает стек вызовов, но вы можете использовать любую команду, какую захотите.