论文部分内容阅读
随着软件系统规模越来越大,软件调试技术在当今的软件工程中变得越发重要。多核处理器的不断发展和并发编程技术的广泛应用,使得传统的软件调试技术无法完全满足调试的需求,这就对调试技术提出了更高的要求。 本文实现的并发程序调试系统分为宿主机端和目标机端。宿主机端包括监视模块、coredump文件解析模块、死锁重放模块和通讯模块。目标机端包括动态执行模块和通讯模块。宿主机端和目标机端通过通信模块进行信息交换。 监视模块基于共享库的同步操作监视技术,获取并发程序中每个线程的同步操作顺序,解决了插桩方式监视同步操作的缺陷;同时在监视模块中实现了运行时死锁检测功能。其次,当并发程序遇到致命错误或出现死锁时,监视器会使其生成coredump文件;通过解析coredump文件、提取并发程序通用寄存器的值和栈回溯信息,从而确定并发错误发生时每个线程的错误目标。而动态符号执行技术利用监视器得到的监视信息和coredump文件解析得到的错误目标信息对并发程序进行动态符号执行,寻找并发程序出错时可能存在数据竞争的指令序列。最后利用共享库函数调用机制,实现死锁错误重放技术。 论文在详细阐述各核心技术模块之后,对并发程序调试系统进行了功能测试和实验分析。通过解析每个功能模块的输出信息,验证了每个功能模块的正确性,并且能够满足并发程序调试的需求。