Погружение в технику и философию gdb

       

установка точки останова на 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 ?? ()



Содержание раздела