Debugging is an essential process with a large share of the development effort, being a relentless quest for offensive code through tracing, inspection and iterative running sessions. Probably every developer has been in a situation with a clear wish to rewind time just for a while, only to retry some actions alternatively, instead of restarting the entire session. Well, the genie to fulfill such a wish is known as a reverse debugger. Their inherent technical complexity makes them very hard to implement, while the imposed execution overhead turns them to less preferable for adoption. There are only a few available, most being off-line tools, working on recorded, previously run, sessions. We consider live reverse debuggers both challenging and promising, since they can fit into existing forward debuggers, and we developed the first live reverse debugger on top of LLDB, discussing in detail our implementation approach.
翻译:调试是一个重要过程,其发展过程有很大一部分是开发努力,通过追踪、检查和迭代运行会议不懈地寻求进攻性代码。 很可能每个开发商都明显希望推迟一段时间,只是重新尝试一些行动,而不是重新开始整个会议。 那么,实现这一愿望的精灵被称为反向调试器。 其固有的技术复杂性使得它们很难执行,而强制执行的间接费用则使它们更不适宜通过。 只有少数可用的工具,大多数是脱机工具,在记录、以前运行的会议期间工作。 我们认为活反向调试器既具有挑战性,又有希望,因为它们可以适应现有的前方调试器,我们开发了LDB上的第一个活的反向调试器,详细讨论我们的执行方法。