Моя платформа - Ubuntu i686 (32 бита)
Если я компилирую источник сборки с драйвером gcc с параметрами отладки:
gcc -nostartfiles -g -o toupper toupper.s
Я открываю исполняемый файл toupper с интегрированным отладчиком gdbemacs editor
$ emacs toupper.s-> M-x gdb -> M-x gdb-many-windows
Я сгенерировал точку останова при первой инструкции с
(gdb) b _start
(gdb) run
Когда я запускаю выполнение с командой run, отладчик останавливается на метке _start, правильно.
Если я скомпилирую тот же исходный toupper.s с помощью ассемблера и сошлюсь с линкером ld:
as -g -o toupper.o toupper.s
ld -o toupper toupper.o
Теперь шаги для отладки соответствуют случаю gcc.
$ emacs toupper.s -> M-x gdb -> M-x gdb-many-windows
(gdb) b _start -> mark with a red point the _start line
(gdb) run -> DONT HIT THE _start LINE ¿?
Я вижу, чтотаблица символов правильная, точки останова отмечают, что она правильная, но выполнение НЕ пошаговое.
У меня есть подробные шаги отображения для случая gcc, и я снова попробовал его в случае как / ld, но в результате получаетсято же самое
on В случае gcc есть опция по умолчанию, которая не соответствует регистру as / ld?
Заранее спасибо