Assembly 使用GDB检查汇编程序

Assembly 使用GDB检查汇编程序,assembly,gdb,Assembly,Gdb,我对汇编很陌生——我们上周刚在课堂上学会了如何阅读。我在做pset,被卡住了。pset的目的是能够找出每个阶段的汇编代码在做什么,并为程序提供正确的输入,使其不会失败。我知道了第一阶段,但我不知道如何进入第二阶段。下面只是代码的一部分,但给出了我正在查看的内容的想法 <redacted> “爆炸炸弹”导致程序失败。现在我在调用“爆炸炸弹”之前,在调用“读取六个数字”之前设置一个断点,并使用info register&stepi以及print语句来尝试查看程序这一部分的正确输入。

我对汇编很陌生——我们上周刚在课堂上学会了如何阅读。我在做pset,被卡住了。pset的目的是能够找出每个阶段的汇编代码在做什么,并为程序提供正确的输入,使其不会失败。我知道了第一阶段,但我不知道如何进入第二阶段。下面只是代码的一部分,但给出了我正在查看的内容的想法

<redacted>

“爆炸炸弹”导致程序失败。现在我在调用“爆炸炸弹”之前,在调用“读取六个数字”之前设置一个断点,并使用info register&stepi以及print语句来尝试查看程序这一部分的正确输入。然而,我真的不确定如何处理这个问题。使用信息寄存器不会给出任何6个数字的序列,我真的不确定这是否是我应该寻找的


由于这是一个pset,我将在提交它时将此链接添加到我的pset自述中,我非常感谢对直接解决方案的解释,因为在这部分之后有更多的阶段我必须解决,并介绍使用gdb解决类似问题的技术,这将是真的,真的很有帮助。

我最终找到了答案-这部分的关键是设置多个断点或使用si来确定程序是如何运行的。我不会直接给出答案,因为这可能违反了学校的规定,但要想找出正确的输入,一步一步地完成课程是至关重要的


感谢David教我有关x GDB命令的知识-它们真的非常有用。

看看GDB
x
(检查)命令。这将允许您展望给定数量的值。例如,
x/8x 0x400500
将允许您查看从内存地址开始的下8个十六进制值
0x400500
。除此之外,您似乎正在使用正确的工具。感谢您指出这一点!!我一定会更仔细地调查。我已经看了一段代码,考虑了我希望GDB停下来查看值的不同位置,特别是在比较点,因为我可能会公开程序期望的值。