помощь для команды stepi GDB - PullRequest
2 голосов
/ 13 января 2010

Мне нужно отследить все инструкции программы, использующей GDB. После каждого выполнения инструкции я хочу, чтобы gdb вызывал указанную функцию.

Это возможная работа? Как этого добиться?

Я искал в интернете и обнаружил, что команда "stepi arg" в gdb может шагать по инструкциям arg Но как найти общее количество инструкций? После каждой инструкции, как заставить gdb автоматически вызывать мою функцию?

Ответы [ 2 ]

3 голосов
/ 23 января 2010
cat t.c
int main() { int x=1; int y=2; int z=x+y; printf("%d",z); return 0; }

gcc t.c
gdb -q ./a.out
break main
run
(no debugging symbols found)...
Breakpoint 1, 0x0000000000400488 in main ()
set logging on
while 1
 >stepi
 >info registers
end
quit

Теперь рассмотрим gdb.log: он должен содержать информацию, которую вы ищете.

P.S. Это не дискуссионный форум. Пожалуйста, не добавляйте вопросы как «ответы». Вместо этого отредактируйте свой оригинальный вопрос, чтобы уточнить его, или используйте комментарии.

1 голос
/ 05 апреля 2010

GDB всегда печатает "--- Тип, чтобы продолжить, или q, чтобы выйти ---" во время выполнения из-за параметра высоты или нумерации страниц.

Чтобы избежать или отключить это, вы должны дать следующую команду либо в приглашении gdb, либо в файле .gdbinit

установить высоту 0 или отключить нумерацию страниц

...