Есть ли способ просмотреть стек конкретного процесса? - PullRequest
1 голос
/ 07 июня 2011

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

1 Ответ

2 голосов
/ 07 июня 2011

Единственный способ сделать это с помощью отладчика или API отладки (ptrace для linux).

В основном, что вы хотите сделать, это:

  • attachк процессу (PTRACE_ATTACH)
  • получить контекст потока (PTRACE_GETREGS)
  • из контекста потока получить значение указателя стека (вероятно esp или rsp)
  • чтение памяти из процесса с использованием ptrace, начиная с адреса указателя стека (PTRACE_PEEKDATA или /proc/<pid>/mem)
  • отсоединение от процесса (PTRACT_DETACH)

Оттуда анализ в значительной степени зависит от вас.Вы можете проверить мой отладчик edb .Для более подробной информации, конечно, вы должны man ptrace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...