none

碩士 === 國立中央大學 === 軟體工程研究所 === 106 === Multi-threaded programs play an increasingly important role in the current multi-core generation. The convenience and performance multi-threaded programs provided have become integral for modern software development. However, although multi-threaded programs hav...

Full description

Bibliographic Details
Main Authors: Chih-Kuan Chen, 陳之寬
Other Authors: 鄭永斌
Format: Others
Language:zh-TW
Published: 2018
Online Access:http://ndltd.ncl.edu.tw/handle/3bbu9s
Description
Summary:碩士 === 國立中央大學 === 軟體工程研究所 === 106 === Multi-threaded programs play an increasingly important role in the current multi-core generation. The convenience and performance multi-threaded programs provided have become integral for modern software development. However, although multi-threaded programs have a number of advantages, they are also prone to concurrency errors. These errors are particularly difficult to avoid, find and fix, because their occurrence depends on specific interleaving. And because of the large number of thread involved, it is not feasible to test all possible interleaving in practices. At the same time, due to the inherent non-determinism of multi-threaded programs, reproduce these concurrency errors and debugging multi-threaded programs becomes very challenging. Although many researches have provided their own tools in the field of reproducing concurrency error, there are few studies on such tools under Linux. Our colleagues have implemented a tool for debugging and testing multi-threaded programs under Windows, providing ability for user to control interleave and manually trigger concurrency errors, and record and/or replay the buggy interleaving to re-generate those concurrency errors. In addition, the tool also provides an exhaustive test module for developers to automatically search for and record buggy interleaving. This paper ports the tool to Linux to provide support for its multi-threaded developers, verifies that the tool meets the requirements through a series of tests and as a basic operating test for future expansion of this tool at the same time.