Linux Assembly Debugger

时间:2011-04-23 00:00:57

标签: linux debugging assembly

我需要在Linux上进行汇编的调试器。对于Linux的LACK调试器,我感到非常惊讶!它应该具有各种功能,例如显示寄存器和不显示寄存器。我会使用GDB,但它与NASM并不完全友好。

我宁愿让调试器具有英特尔语法,但我可以做出牺牲。

我试过kdb,gdb / ddd和ald。有没有人知道别的吗?不建议使用strace,因为我超越了系统调用!

3 个答案:

答案 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程序集调试器,这意味着创建断点的可能性,一步一步地运行,实时查看寄存器,返回(回溯)或前进,查看内存中的数据等。

正确使用该解决方案DDD / GDB

首先,屏幕截图显示它的外观。

ddd debugging an ASM file

需要一些特殊要求:

  • 创建可执行文件时,请使用-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调试格式。

来源和简短的教程:

The Data Display Debugger (DDD), A Quick Start Guide