Low-overhead interactive debugging via dynamic instrumentation with DISE

Low-overhead interactive debugging via dynamic instrumentation with DISE
复制标题

通过 DISE 动态仪表进行低开销交互式调试

DOI:
10.1109/hpca.2005.18
复制
发表时间:
2005
期刊:
11th International Symposium on High-Performance Computer Architecture
影响因子:
--
通讯作者:
A. Roth
A. Roth
中科院分区:
--
文献类型:
--
作者:
Marc L. Corliss;E. Lewis;A. Roth

文献摘要

被引文献

相似文献

两者的断点,观察点和条件变体都是必不可少的基本调试,但是它们的自然实现通常会大大降低性能。由于调试器 - 实现断点/观察点接口的工具 - 在与调试应用程序分开的过程中实现。由于调试器评估观察点表达式和有条件的谓词以确定是否调用用户,因此调试会话通常需要许多昂贵的应用程序 - 示波器上下文开关,从而在当前的商业和开源辩论者中导致40,000次或更多倍的放缓!在本文中,我们提出了(有条件的)断点和观察点的有效实现,该实现使用Dise将调试器逻辑动态嵌入到运行应用程序中。 DISE(动态指令流编辑)是一种先前提出的可编程硬件功能,用于通过在解码时转换指令流来动态自定义应用程序。 Dise嵌入保留应用程序的逻辑分离和调试器N结构的逻辑分离是动态和透明的,现有的应用程序代码和数据未经静态修改 - 并且几乎没有启动成本。对规格2000整数基准测试的周期级仿真表明,Dise方法消除了所有不必要的上下文切换,通常将开销限制为多种观察点的开销至25%或更少,并且超过了其他实现。
Breakpoints, watchpoints, and conditional variants of both are essential debugging primitives, but their natural implementations often degrade performance significantly. Slowdown arises because the debugger - the tool implementing the breakpoint/watchpoint interface - is implemented in a process separate from the debugged application. Since the debugger evaluates the watchpoint expressions and conditional predicates to determine whether to invoke the user, a debugging session typically requires many expensive application-debugger context switches, resulting in slowdowns of 40,000 times or more in current commercial and open-source debuggers! In this paper, we present an effective and efficient implementation of (conditional) breakpoints and watchpoints that uses DISE to dynamically embed debugger logic into the running application. DISE (dynamic instruction stream editing) is a previously proposed, programmable hardware facility for dynamically customizing applications by transforming the instruction stream as it is decoded. DISE embedding preserves the logical separation of application and debugger nstructions are added dynamically and transparently, existing application code and data are not statically modified - and has little startup cost. Cycle-level simulation on the SPEC 2000 integer benchmarks shows that the DISE approach eliminates all unnecessary context switching, typically limits debugging overhead to 25% or less for a wide range of watch-points, and outperforms alternative implementations.