Linux的调试
我现在正在扩展我的x86汇编知识,学习的最佳工具之一是。当我学习汇编(过去4年)时,我使用的是Windows,但现在我使用的是Linux Ubuntu,调试工具仅适用于Windows。然后我想知道Linux是否有任何端口或等效端口Linux的调试,linux,assembly,Linux,Assembly,我现在正在扩展我的x86汇编知识,学习的最佳工具之一是。当我学习汇编(过去4年)时,我使用的是Windows,但现在我使用的是Linux Ubuntu,调试工具仅适用于Windows。然后我想知道Linux是否有任何端口或等效端口 请记住,我不想调试我的代码,而是执行命令-r,-t,-e…gdb-这是Linux标准的调试器。它比DEBUG(如果你指的是旧的DOS工具)功能强大得多,如果你在Linux上编程,你至少应该学习如何使用它的基本知识。gdb几乎就是Linux平台上的调试器。您没有指定您需
请记住,我不想调试我的代码,而是执行命令
-r
,-t
,-e
…gdb-这是Linux标准的调试器。它比DEBUG(如果你指的是旧的DOS工具)功能强大得多,如果你在Linux上编程,你至少应该学习如何使用它的基本知识。gdb几乎就是Linux平台上的调试器。您没有指定您需要的功能,但它可能有这些功能:)我使用调试主要是为了组装而不是“调试”。。。如果这是你的目标
- 是一个语法更相似的好汇编程序
- 然后运行代码,允许反汇编,并检查内存
-r
=信息寄存器
-t
=stepi
-e
=无直接等效物;塔维索写了一篇提供类似功能的文章
debug
在没有参数的情况下启动时,您可以使用一些空白的64k内存;GDB没有。无论如何,这只在DOS上才有意义;你必须从一些二进制文件开始
也许像这样组装一些空白板岩
$ echo .globl main >a.s
$ echo main: >>a.s
$ for i in {1..65536}; do echo 'int $3'; done >>a.s
$ cc a.s
$ gdb a.out
(gdb) run
$echo.globl main>a.s
$echo main:>>a.s
在{1..65536}中的i为$;做回显'int$3';完成>>a.s
$cc a.s
$gdb a.out
(gdb)运行
改进了链接并指定了我想要的功能。很抱歉,现在我已经指定了我想要的功能。我听说汇编此代码的GAS后端设计用于接受GCC的(完美)输出—它的错误报告,因此对用户不友好。不过,我找不到这方面的参考资料。没关系:我们正在组装一个如此愚蠢和愚蠢的东西,无论如何都不可能失败-D这将创建一个对象,其中
main
只是一个64kB的断点序列(nop
和。字节0
在我的测试中不起作用)。