我对GDB和QIRA之类的工具中的反向调试(通过程序及时退步)功能印象深刻,但是对于为何OSX平台不存在这样的程序,我有些困惑(GDS不支持反向在OSX上进行调试。)是否出于技术原因在OSX上无法进行反向调试器?我可以想象,在相同的体系结构下,实现时间遗忘的调试器的任务将几乎完全相同。为什么移植到OSX不可能或困难?我主要认为这里存在技术挑战,因为没有人实施过如此明显有用的程序。

#1 楼

老实说,gdb中的可逆库存调试支持并不是那么有用。这真的很慢(因为它记录了各个指令),因此通常只需要为程序的关键部分打开它即可。我不知道有很多人使用它,这也许可以解释为什么它没有被广泛移植。我对QIRA的实现并不熟悉,所以我不知道会有什么原因。但这与特定的操作系统有更多的联系,因此要为另一个平台重新实现需要大量的工作。默认。但是随后您必须运行完整的OS才能记录/重放一个程序,因此这可能也不是很吸引人。这是PANDA和一些实验性QEMU补丁所采用的方法(请注意PANDA尚未真正支持gdb反向指令,但可以实现)。