Отображение каждой инструкции сборки, выполняемой в gdb

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

Я надеюсь достичь чего-то вроде этого:

(gdb) /* some command */
0x2818a7c0: push   %ebp
0x2818a7c1: mov    %esp,%ebp
0x2818a7c3: push   %ebx
0x2818a7c4: sub    $0x4,%esp
...
0x28563622: mov    %esi,0x0(%eax)
Program received signal SIGSEGV, Segmentation fault.

Я настраивал отображение счетчика программ, например:

(gdb) display/i $pc

И затем прогонял код с помощью stepi :

(gdb) stepi
1: x/i $pc  0x2818a7c0: push   %ebp

Тем не менее, сбой происходит через сотни или тысячи инструкций, и я хотел бы увидеть каждую из них (вместе, если желательно), без необходимости многократно нажимать клавишу «Enter». Кроме того, если бы мне пришлось делать это вручную, я бы увидел приглашение (gdb) между каждой инструкцией, что нежелательно.

Один из маршрутов, который я кратко рассмотрел, - это сценарий , но моя единственная мысль - настроить его на main () , чтобы он отображался и еще один перерыв (для следующей инструкции) , а затем продолжить, но тогда я не могу использовать команды в блоке commands , поэтому это не сработает так, как я себе это представляю.

Если это важно, я работаю над FreeBSD.

10
задан Dan Fego 12 January 2012 в 20:40
поделиться