【发布时间】:2011-04-23 00:00:56
【问题描述】:
我需要一个调试器来在 Linux 上进行汇编。我对 Linux 缺乏调试器感到非常惊讶!它应该具有各种功能,例如显示寄存器等等。我会使用 GDB,但它对 NASM 并不完全友好。
我宁愿调试器有 intel 语法,但我可以做出牺牲。
我尝试过 kdb、gdb/ddd 和 ald。还有人知道吗?不推荐 strace,因为我超越了系统调用!
【问题讨论】:
我需要一个调试器来在 Linux 上进行汇编。我对 Linux 缺乏调试器感到非常惊讶!它应该具有各种功能,例如显示寄存器等等。我会使用 GDB,但它对 NASM 并不完全友好。
我宁愿调试器有 intel 语法,但我可以做出牺牲。
我尝试过 kdb、gdb/ddd 和 ald。还有人知道吗?不推荐 strace,因为我超越了系统调用!
【问题讨论】:
当您说 gdb 对 NASM 不友好时,我不确定您到底是什么意思。问题是 gdb 使用 AT&T 表示法来显示汇编程序。 NASM 使用 Intel 表示法。您可以在 Google 上找到一些差异。
您可以将 gdb 配置为使用 Intel 表示法显示汇编程序。命令是:
set disassembly-flavor intel
您尝试过的程序,kdb、ddd 和朋友都是 gdb 前端,即它们在使用 gdb 作为后端时为您呈现不同的 UI。
我认为你最好的,也许是唯一合理的选择是 gdb。另一种选择是自己编写一个调试器,但这相当复杂。
希望对你有帮助。
【讨论】:
here 列出的任何调试器对您有帮助吗?
【讨论】:
我真的很理解@Saustin 的问题,因为我也在寻找Linux Assembly Debugger,这意味着可以创建断点,逐步运行,实时查看寄存器,返回(回溯) 或者往前走,查看内存中的数据等。
首先是屏幕截图显示它的外观。
它需要一些特殊要求:
nasm 中使用特殊标志 -F stabs,如下所示: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 调试格式。
来源和优秀的简短教程:
【讨论】:
nasm -g -Fdwarf 配合得更好。它可以使用 STABS,但 DWARF 是更现代的格式。另请参阅x86 tag wiki 底部的 GDB 调试技巧和strace。
如果您熟悉 GDB,那么您可以尝试使用 PEDA 扩展,对我来说它将命令行体验与 GUI 混合在一起
【讨论】: