установка точки останова на main
Загрузка исполняемых файлов без символьной информации. Если символьная информация отсутствует (например, была отрезана утилитой strip, как _очень_ часто и бывает), то установка точек останова на _start/main
становится невозможной и мы должны указать отладчику "физический" адрес точки входа, который можно получить, например, при помощи утилиты objdump, запущенной с ключом -f:
#strip gdb-demo
#objdump -f gdb-demo
gdb-demo: O : i386, EXEC_P, HAS_SYMS, D_PAGED
архитектура: i386, флаги 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
начальный адрес 0x08048300
# gdb -q gdb-demo
(no debugging symbols found)...
(gdb) b main
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
# ^ установка точки останова на main провалилась, (т.к. символьной информации нет)
# отладчик предложил установить ее позднее, когда такой символ станет доступен,
# но мы от этого отказались, поскольку такой символ не станет доступен никогда
(gdb) tb *0x8048300
Breakpoint 1 at 0x8048300
# ^ установка точки останова по непосредственному адресу прошла успешно
(gdb) r
Starting program: /home/kpnc/gdb/gdb-demo
(no debugging symbols found)...
0x08048300 in ?? ()