2010-11-14 2 views
1

В настоящее время попытки отладить с KDbg/GdB исходного кода Башни Ханоя из http://www.kernelthread.com/projects/hanoi//html/asm.html (большого ресурса)Отладочной информации не входит -g

Так как я хотел, чтобы просмотреть, как стек используется в рамках этой проблемы, я собрал его с NASM и использовал GCC для его соединения. Однако я заметил, что в KDbg текущая точка выполнения не обновлялась (т. Е. Я не мог определить, где я находился в файле). Поскольку KDbg полагается на gdb, я запустил код внутри gdb, чтобы узнать, были ли у меня подобные проблемы.

Если установить контрольную точку на линии № 30 в программе (которая представляет собой строку в основной функции), я получаю следующее:

(gdb) break 30 
Breakpoint 2 at 0x804840b: file hanoi.asm, line 30. 
(gdb) next 
Single stepping until exit from function main, 
which has no line number information. 

Я в настоящее время компиляции сборки со следующими мало сценарий я написал (я, вероятно, следует перейти на косметическим файл, но это не работает до сих пор)

[email protected]:~/.scripts$ cat asmgcc 
# /usr/bin/sh 

nasm -f elf -g -F stabs $1.asm -l $1.lst 
gcc -g $1.o -o $1 

Я просто мигрировали из CentOS в Ubuntu, так что я не уверен, если это ОС проблема среды, с которой я не знаком, или другая проблема.

Как всегда, заблаговременно за помощь.

+0

Вам необходимо передать -g в gcc –

+0

@Paul R - К сожалению, я уже пытался сделать это изменение (gcc -g $ 1.o -o $ 1). Не имеет значения. – BSchlinker

ответ

2

Попробуйте -F dwarf вместо -F stabs.

+0

Да, это сработало. Подумайте, почему kdbg на Ubuntu больше не любит удары, а CentOS kdbg все еще делает? – BSchlinker

+0

Не знаю. Я знаю, что STABS - это действительно старый (и довольно ужасный) формат отладки, и вы, как правило, избегаете этого. –

0

Собрать можно с помощью as -o tmp.o something.s && ld -s -o something tmp.o && rm tmp.o. В gdb только display/8i *$eip (или rip, если 64 бит), он будет отображать 8 инструкций после указания указателя с каждым шагом. Так что вам вообще не нужна информация для отладки ;-)

Смежные вопросы