目前正在尝试使用 KDbg / gdb 调试来自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,所以我不确定这是我不熟悉的操作系统环境问题,还是其他问题。
与往常一样,提前感谢您的任何帮助。