Как установить самую раннюю точку останова

Я пытаюсь остановить сразу после загрузки модуля в GDB. Давайте предположим, что двоичный файл полностью удален из всей символьной информации, поэтому здесь нет главного.

В идеале я бы установил точку останова на точке входа, но эта идея не работает из-за перемещений:

(gdb) info target
Symbols from "./application".
Local exec file:
    `./application', file type elf64-x86-64.
    Entry point: 0xc154
...
(gdb) break *0xc154
Breakpoint 1 at 0xc154
(gdb) r
Starting program: ./application 
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0xc154: Input/output error.

(gdb) info target
Symbols from "./application".
Unix child process:
    Using the running image of child process 22835.
    While running this, GDB does not access memory from...
Local exec file:
    `./application', file type elf64-x86-64.
    Entry point: 0x555555560154

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

Есть способ сделать это? В идеале было бы полезно что-то вроде «запустить одну инструкцию», а не «запустить».

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

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