Debugging 如何在不使用操作系统功能的情况下创建调试器

Debugging 如何在不使用操作系统功能的情况下创建调试器,debugging,Debugging,最近我接到一家公司的测试任务。一个问题是: 假设给您一个任务来编写一个简单的调试器(用于 专有操作系统),能够设置断点 在应用程序中并运行它。关键的设计决策是什么 你做了这样的任务 我想我不知道一些事情,但我完全不知道答案。我理解调试器是如何工作的(INT 3-应该可以访问调试器的虚拟空间),但我想关于“专有操作系统”的答案应该是这样的。这个问题,就像采访时一样,应该会让你问更多关于系统和需求的问题 操作系统是否已经提供了某种可以使用的原始跟踪工具? 测试应用程序是用什么语言编写的 一些检查工具

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

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


我想我不知道一些事情,但我完全不知道答案。我理解调试器是如何工作的(INT 3-应该可以访问调试器的虚拟空间),但我想关于“专有操作系统”的答案应该是这样的。

这个问题,就像采访时一样,应该会让你问更多关于系统和需求的问题

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


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

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