The execution of concurrent programs generally involves some degree of nondeterminism, mostly due to the relative speeds of the concurrent processes. As a consequence, reproducibility is often challenging. This problem has been traditionally tackled by a combination of tracing and replay. In this paper, we introduce a program instrumentation for "prefix-based tracing" that combines both tracing and replay. In the general case, the program is instrumented with a partial trace, so that the execution first follows the partial trace (replay) and, then, proceeds nondeterministically, eventually producing a trace of the complete execution as a side effect. Observe that traditional tracing and replay are particular cases of our approach when an empty trace is provided (pure tracing) and when a full trace is provided (pure replay), respectively.
翻译:执行并行程序通常涉及某种程度的不确定性, 主要是因为同时程序的相对速度。 因此, 重复性往往具有挑战性。 这个问题传统上是通过追踪和重播相结合的方法来解决的。 在本文中, 我们引入了“ 基于前缀的追踪” 程序仪表, 将追踪和重播结合起来。 在一般情况下, 程序带有部分痕迹, 因此执行首先在部分追踪( 重播) 之后进行, 然后不确定性地进行, 最终产生完全执行的痕迹, 作为副作用。 注意传统的追踪和重播是提供空白追踪( 纯追查) 和提供完整追踪( 纯重播) 时我们的方法的特殊案例 。