Перечислите все процессы и потоки в процессах из дампа ядра Linux, используя gdb - PullRequest
2 голосов
/ 09 марта 2011

Я разрабатываю инструмент создания сценариев для дампов ядра gdb / linux, где, если я указываю сценарий на удар ядра, он перечисляет все следы стека всех потоков в процессе, то есть то, что я пытаюсь достичь, это в значительной степени эквивалент gdb для windbg ! process 0, который выводит все процессы и потоки из стека из дампа.

Есть ли в gdb эквивалент! Process 0?

если нет

Что такое команда gdb для вывода списка всех процессов и всех потоков в процессах в gdb из дампа памяти?

Это позволило бы мне написать скрипт для циклического перебора всех pid и tid и получить обратную трассировку, которая может быть записана в файл?

Также есть предложения по языку сценариев для этого, такие как perl / python, лучше только приветствовать.

Спасибо Ганеш

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Это даст вам обратные следы всех потоков со всеми местными жителями во всех кадрах:

(gdb) thread apply all bt full

Я не думаю, что одноядерный файл охватывает более одного процесса. Посмотрите документацию GDB для ваших вариантов сценариев.

0 голосов
/ 11 марта 2011

Вместо thread apply all bt лучше использовать интерпретатор Python, который встроен в последних версий GDB, вместо того, чтобы пытаться анализировать текстовый вывод GDB.

Николай прав в том, что файл ядра UNIX охватывает только один процесс (тот, который потерпел крах или был убит).

...