Отладочная информация не включена с -g - PullRequest
1 голос
/ 15 ноября 2010

В настоящее время пытаюсь отладить с помощью KDbg / gdb исходный код Towers of Hanoi из http://www.kernelthread.com/projects/hanoi//html/asm.html (отличный ресурс)

Поскольку я хотел посмотреть, как стек используется в этой задаче, я собрал его с 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.

В настоящее время я собираю сборку с помощью следующего небольшого скрипта, который я написал (возможно, мне следует перейти на файл make, но до сих пор это работало)

bschlinker@net1develop02:~/.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, поэтому я не уверен, является ли это проблемой среды ОС, с которой я не знаком, или другой проблемой.

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

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

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

0 голосов
/ 15 ноября 2010

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

...