Как использовать трассировку в GDB - PullRequest
6 голосов
/ 24 августа 2011

В документации для gdb :

Функция трассировки в настоящее время доступна только для удаленных целей.Смотрите раздел Указание цели отладки.Кроме того, ваша удаленная цель должна знать, как собирать данные трассировки.Эта функциональность реализована в удаленной заглушке;однако, ни одна из заглушек, распространяемых с GDB, не поддерживает точки трассировки на момент написания .

.Где взять такую ​​заглушку (для кода C / C ++, скомпилированного с GCC на Debian x86 или x64)?Или как мне сделать один?В документации по написанию заглушек упоминаются только реализации функций для связи с последовательными портами.Спасибо!

1 Ответ

1 голос
/ 24 августа 2011

Я не очень разбираюсь в удаленных устройствах, но некоторые цели в gdb теперь поддерживают точки трассировки. Возможно, есть способ добиться этого, используя «обычную» информацию gdb или команду show, я не смог ее найти.в выводе ниже поддерживаются точки трассировки из-за 'support = 1', это может быть не ограничено заглушкой gdb, но также ядром, на котором работает заглушка.

$ gdbserver/gdbserver :12345 ~/tests/test &
$ gdb -quiet
(gdb) file ~/tests/test
Reading symbols from /home/ratmice/tests/test...done.
(gdb) target remote :12345
Remote debugging using :12345
Remote debugging from host 127.0.0.1
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x00000035dd600b20 in _start () from /lib64/ld-linux-x86-64.so.2
Created trace state variable $trace_timestamp for target's variable 1.
Missing separate debuginfos, use: debuginfo-install glibc-2.13-2.x86_64
(gdb) interpreter-exec mi2 -trace-status
^done,supported="1",running="0",frames="0",frames-created="0",buffer-size="5242880",buffer-free="5242880",disconnected="0",circular="0"
...