Отображение каждой инструкции по сборке, выполненной в 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

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

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

В случае, если это имеет значение, я работаю над FreeBSD.

Ответы на вопрос(3)

Ваш ответ на вопрос