【问题标题】:How to create a debugger without using operating system capabilities如何在不使用操作系统功能的情况下创建调试器
【发布时间】:2012-05-05 10:00:03
【问题描述】:

最近接到一家公司的测试任务。一个问题是:

假设你有一个任务是编写一个简单的调试器(对于一个 专有操作系统),能够设置断点 在应用程序中并运行它。什么是关键的设计决策 你做这样的任务?

我想我什么都不知道,但我完全不知道答案。我了解调试器的工作原理(INT 3 - 应该可以访问调试器的虚拟空间),但我想答案是关于“专有操作系统”。

【问题讨论】:

  • 您需要更全面地思考 - INT 3 是特定于 CPU 的,问题并没有说明这个专有操作系统运行在什么 CPU 上。
  • 嗯,我在想一个非专有操作系统。也不确定他们在做什么,因为操作系统是一套应用程序,其中一些您可能会在调试器中使用,但希望是相当高的抽象级别。这听起来像是一个非常技术性问题的人力资源翻译。
  • @TonyHopkinson 我认为“专有”的意思是,您不能修改操作系统的任何部分。
  • @Rafal。也许他们当时应该使用不同的词,因为这不是专有的意思,而且你不能修改任何部分的操作系统是浪费比特。
  • @TonyHopkinson 我知道专有意味着什么,我只是假设这是“您没有源代码并且无法为您的目的扩展操作系统”的不精确缩写,这是一个合理的约束条件你提出了这样一个测试任务。

标签: debugging


【解决方案1】:

像往常一样,这个问题应该让你问更多关于系统和要求的问题

操作系统是否已经提供了某种可以使用的原始跟踪工具? 测试应用程序是用什么语言编写的?

一些检查工具,例如 valgrind,run inspected programs in their own environment,这在您的情况下似乎是个好方法。另一种方法是使用跟踪指令检测二进制文件,与您的调试器通信 - 当您的应用程序在 VM 下运行时,这可能更合适且更容易做到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2013-11-15
    相关资源
    最近更新 更多