首页> 外文期刊>Science of Computer Programming >Improving live debugging of concurrent threads through thread histories
【24h】

Improving live debugging of concurrent threads through thread histories

机译:通过线程历史记录改善并发线程的实时调试

获取原文
获取原文并翻译 | 示例

摘要

Concurrency issues are inherently harder to identify and fix than issues in sequential programs, due to aspects like indeterminate order of access to shared resources and thread synchronisation. Live debuggers are often used by developers to gain insights into the behaviour of concurrent programs by exploring the call stacks of threads. Nevertheless, contemporary live debuggers for concurrent programs are usually sequential debuggers augmented with the ability to display different threads in isolation. To these debuggers every thread call stack begins with a designated start routine and the calls that led to the creation of the thread are not visible, as they are part of a different thread. This requires developers to manually link stack traces belonging to related but distinct threads, adding another burden to the already difficult act of debugging concurrent programs. To improve debugging of concurrent programs we address the problem of incomplete call stacks in debuggers through a thread and debugger model that enables live debugging of child threads within the context of their parent threads. The proposed debugger operates on a virtual thread that merges together multiple relevant threads. To better understand the features of debuggers for concurrent programs we present an in-depth discussion of the concurrency related features in current live debuggers. We test the applicability of the proposed model by instantiating it for simple threads, local and remote promises, and a remote object-oriented database. Starting from these use cases we further discuss implementation details ensuring a practical approach.
机译:由于诸如对共享资源的访问顺序不确定和线程同步之类的方面,并发问题从本质上说比顺序程序中的问题更难识别和解决。开发人员经常使用实时调试器通过探索线程的调用堆栈来了解并发程序的行为。然而,当代的并发程序实时调试器通常是顺序调试器,具有独立显示不同线程的能力。对于这些调试器,每个线程调用堆栈均以指定的启动例程开始,并且导致线程创建的调用不可见,因为它们是不同线程的一部分。这要求开发人员手动链接属于相关但不同的线程的堆栈跟踪,这给调试并发程序的本来就很困难的工作增加了负担。为了改善并发程序的调试,我们通过线程和调试器模型解决了调试器中调用栈不完整的问题,该模型可以在子线程的父线程上下文中进行实时调试。建议的调试器在虚拟线程上运行,该虚拟线程将多个相关线程合并在一起。为了更好地理解并发程序调试器的功能,我们对当前实时调试器中与并发相关的功能进行了深入的讨论。我们通过为简单线程,本地和远程Promise以及远程面向对象的数据库实例化该模型,来测试该模型的适用性。从这些用例开始,我们将进一步讨论确保实用方法的实现细节。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号