[x86 ASM]运行带参数的图形化调试器

时间:2015-02-10 21:08:31

标签: debugging assembly

您认为这会更容易实现。我试图理解一个名为hexdump1的小程序,来自"汇编语言一步一步第3版"它要求我传递一个像这样的论点:

  

hexdump1< input.txt中

我非常陌生,很难理解使用gdb时发生的事情。为了使开始时更容易,我使用EDB调试器。根据选项 选项卡有一个选项来设置应用程序参数。我将参数设置为:

  

< input.txt中

  

input.txt中

但是一旦我进入代码中读取输入的部分,它就会一直运行,我无法再调试它。我发现很难相信图形化调试器根本无法使用参数调试应用程序,因为这样会使用限制。

此外,代码运行得很好,并且完全符合它在终端中的应用。是否有更好的图形调试器用于我的目的?谢谢。

1 个答案:

答案 0 :(得分:1)

这里的问题是< input.txt部分从未打算成为hexdump1的参数。显然,hexdump1已被编写为从标准输入读取(并且我认为写入标准输出。)

因此,< input.txt部分是您在命令行中输入并由命令解释程序(Windows下的cmd.exe)解析的一些文本,它告诉命令解释程序使用其标准输入流启动hexdump1重定向以从该文件中读取。因此,hexdump1最终会在不知情的情况下读取该文件。

现在,当从调试器中启动hexdump1时,调试器不会尝试解释< input.txt部分,因此它将它作为参数传递给hexdump1,后者忽略它并继续尝试读取来自标准输入。标准输入为空,因此hexdump1不执行任何操作。

除了以下问题,我无法解决您的问题:

  1. 修改hexdump1以读取其文件名作为参数传递而不是从标准输入读取的实际文件

  2. 与调试器的选项混淆,看是否有任何方法可以指定实际文件来重定向标准输入。