最近接到一家公司的测试任务。一个问题是:
假设您有一个任务是编写一个简单的调试器(用于专有操作系统),该调试器能够在应用程序中设置断点并运行它。您在这样的任务中做出的关键设计决策是什么?
我想我什么都不知道,但我完全不知道答案。我了解调试器的工作原理(INT 3 - 应该可以访问调试器的虚拟空间),但我想答案是关于“专有操作系统”。
最近接到一家公司的测试任务。一个问题是:
假设您有一个任务是编写一个简单的调试器(用于专有操作系统),该调试器能够在应用程序中设置断点并运行它。您在这样的任务中做出的关键设计决策是什么?
我想我什么都不知道,但我完全不知道答案。我了解调试器的工作原理(INT 3 - 应该可以访问调试器的虚拟空间),但我想答案是关于“专有操作系统”。
这个问题,像往常一样在面试中应该会让你对系统和要求提出更多的问题。
操作系统是否已经提供了某种可以使用的原始跟踪工具?测试应用程序是用什么语言编写的?
一些检查工具,例如 valgrind,在他们自己的环境中运行被检查的程序,这在你的情况下似乎是一个好方法。另一种方法是使用跟踪指令检测二进制文件,与您的调试器通信 - 当您的应用程序在 VM 下运行时,这可能更合适且更容易执行。