В настоящее время у меня есть сложная ошибка, которая возникает в месте, где у меня нет доступа к источнику или символам, т.е. я могу видеть инструкцию и ее адрес, где происходит сбой, но это все . Я бы хотел, чтобы 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.