我需要在Linux上进行汇编的调试器。对于Linux的LACK调试器,我感到非常惊讶!它应该具有各种功能,例如显示寄存器和不显示寄存器。我会使用GDB,但它与NASM并不完全友好。
我宁愿让调试器具有英特尔语法,但我可以做出牺牲。
我试过kdb,gdb / ddd和ald。有没有人知道别的吗?不建议使用strace,因为我超越了系统调用!
答案 0 :(得分:12)
当你说gdb与NASM不友好时,我不确定你到底是什么意思。问题是gdb使用AT& T表示法来显示汇编程序。 NASM使用Intel表示法。您可以在Google上找到几个不同之处。
您可以使用Intel表示法配置gdb以显示汇编程序。该命令设置为disassembly-flavor intel
你尝试过的程序,kdb,ddd和朋友都是gdb前端。即他们在使用gdb作为后端时为您呈现不同的UI。
我认为你最好也许唯一合理的选择是gdb。其他选择是自己编写调试器,但这很安静很复杂。
希望它有所帮助。
答案 1 :(得分:3)
列出here列出的任何调试器都可以帮助您吗?
答案 2 :(得分:1)
我真的理解@Saustin的问题,因为我也在寻找一个Linux程序集调试器,这意味着创建断点的可能性,一步一步地运行,实时查看寄存器,返回(回溯)或前进,查看内存中的数据等。
首先,屏幕截图显示它的外观。
需要一些特殊要求:
-F stabs
中的特殊标记nasm
,如下所示:Linux命令行:
nasm -f elf -F stabs hello.asm -o hello_stabs.o
ld -m elf_i386 hello_stabs.o -o hello_stabs
然后您通常运行调试,如:ddd hello_stabs
享受!
选项-F stabs
告诉汇编器在输出文件中包含调试信息。 DDD和GDB使用STABS调试格式。
来源和简短的教程: