2015-07-07 3 views
1

Я хочу, чтобы получить трассировку стека в процессе А по способу Б Я знаю, что могу использовать gdb --pid pid_of_A, а затем использовать info stack получить трассировку стека в процессе А.Как я могу получить обратную трассировку стека запущенного процесса другим процессом в mips?

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

Вы можете помочь в этом?

+0

'ptrace()' может использоваться для этой цели. http://linux.die.net/man/2/ptrace – Jeyaram

+0

Для этого ptrace может получать только регистры, не может получить обратную трассировку. Я попробовал не удалось – Vincent

+0

Отъезд [libunwind] (http://www.nongnu.org/libunwind/). –

ответ

0

Вы должны использовать libgdb. С libgdb вы можете программно выполнять команды gdb так же, как кто-то, выполняющий интерактивный сеанс gdb.

Вот является основной функцией использовать:

struct gdb_str_output gdb_execute_for_strings (char *cmd) 

Это выполняет команду в cmd (например backtrace) и возвращает структуру, содержащую вывод команды.

+0

Можете ли вы дать мне простой полный пример, спасибо – Vincent

+0

'libgdb' является прерванной попыткой с 1993 года. В 1999 году он был снова опробован как' libgdb2', но также не получил большой тяги. https://sourceware.org/ml/gdb-patches/2009-03/msg00676.html –

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