【问题标题】:How to debug a program/view registers that require user input如何调试需要用户输入的程序/查看寄存器
【发布时间】:2013-04-06 22:07:09
【问题描述】:

我有一个汇编程序,我正试图通过调试进行测试,但是该程序通常有用户输入的整数。有没有办法调试程序并且仍然能够“运行”它,因为我可以将整数输入到程序中,但仍然可以查看寄存器中的值?

提前感谢您的帮助。

【问题讨论】:

  • 什么调试器?什么操作系统?您如何阅读用户输入?向我们展示代码。
  • 抱歉,不是很清楚,我在 DosBox 中使用 nasmide 调试器。我目前正在使用 Int 21H 中断之一,特别是 AH=01 来读取用户输入。

标签: debugging assembly nasm x86-16 dosbox


【解决方案1】:

有没有办法调试程序并且仍然能够“运行”它,因为我可以将整数输入到程序中,但仍然可以查看寄存器中的值?

是的,任何值得一提的调试器都应该能够让您逐条执行代码。

例如,Borland 的 Turbo Debugger 和 Open Watcom Watcom Debugger 具有 Trace IntoStep Over 执行选项。两者相似但不完全相同。后者作为call subroutine 指令的一部分执行整个子程序,而前者只执行一条指令,无论它是否为call

了解如何在调试器中执行此操作。查看其 UI 和/或文档。

此外,调试器通常允许您在选择的指令上设置断点并执行代码,直到遇到断点。你也可以使用它。

【讨论】:

  • 好的,谢谢.. 老实说,我不确定我使用的是什么调试器,尽管我认为它是 nasmide 或者实际上只是在 DOS Shell 中调试。无论如何,我决定只输入一些设定值而不是用户输入,这样我就可以进行一些基本的调试。不过感谢您的帮助,我可能会尝试看看是否可以下载其中一个调试器。
  • 您绝对可以下载 wd.exe 作为 Open Watcom C/C++ 的一部分。
  • 如果是常规的旧 DEBUG(呃……呃……),不要尝试 trace 和 int 21h - 改用 proceed。那应该等你输入一个字符。我记得,tracing 虽然 dos 根本无法正常工作!
  • @FrankKotler 你是对的,t 正在做一些奇怪的事情,应该改用p。刚刚检查过。
猜你喜欢
  • 2012-10-23
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多