The article discusses the use of static analysis to identify bugs in computer software. Specifically, the authors describe what they learned in the course of commercializing their Coverity Static Analysis bug-detectin...
详细信息
The article discusses the use of static analysis to identify bugs in computer software. Specifically, the authors describe what they learned in the course of commercializing their Coverity Static Analysis bug-detecting software for industrial use. Among topics covered are the unwillingness of some firms to subject all of their code to the author's software, conflicts between their product and other software programs, the necessity of being able to parse code that is to be checked, and firms' occasional indifference to bugs that are discovered.
This article presents a local LR error repair method that repairs syntax errors quickly by adoption of the A* algorithm that helps remove unproductive configurations. The new method also enhances the repair quality by...
详细信息
This article presents a local LR error repair method that repairs syntax errors quickly by adoption of the A* algorithm that helps remove unproductive configurations. The new method also enhances the repair quality by adoption of a flexible edit strategy to support shifting symbols unrestrictedly, as well as inserting and deleting symbols, in order to repair invalid input strings. Experimental results show that the new method excels existing works in repair quality and efficiency.
Static program analysis techniques cannot know certain values, such as the value of user input or network state, at analysis time. While such unknown values need to be treated as nondeterministic choices made by the p...
详细信息
Static program analysis techniques cannot know certain values, such as the value of user input or network state, at analysis time. While such unknown values need to be treated as nondeterministic choices made by the program's execution environment, it is still possible to glean very useful information about how such statically unknown values may or must influence computation. We give a method for integrating such nondeterministic choices with an expressive static analysis. Interestingly, we cannot solve the resulting recursive constraints directly, but we give an exact method for answering all may and must queries. We show experimentally that the resulting solved forms are concise in practice, enabling us to apply the technique to very large programs, including an entire operating system.
The article discusses model driven engineering techniques in computer software design, and the difficulties of testing automatic model transformations. A fault in one model system can propagate into another during thi...
详细信息
The article discusses model driven engineering techniques in computer software design, and the difficulties of testing automatic model transformations. A fault in one model system can propagate into another during this process, but the changes induced by the transformation often make it difficult to systematically isolate the source of the problem. An example is provided which involves flattening hierarchies and meta-models. The difficulties which arise from the translation of complex data between heterogeneous computer languages is discussed. Potential solutions to some of these problems are also presented, involving the construction of oracles, meta-heuristics, and the use of white-box testing.
This book teaches by example. It walks in detail through development of a sample application, illustrating each step via complete working code and either screenshots or console snippets. The cumbersome and time consum...
详细信息
ISBN:
(数字)9781847197573
ISBN:
(纸本)9781847197566
This book teaches by example. It walks in detail through development of a sample application, illustrating each step via complete working code and either screenshots or console snippets. The cumbersome and time consuming task of debugging will be a cake walk with this book. If you are a Django application developer who wants to create robust applications quickly that work well and are easy to maintain in the long term, this book is for you. This book is the right pick if you want to be smartly tutored to make best use of Django's rich testing and debugging support and make testing an effortless *** knowledge of Python, Django, and the overall structure of a database-driven web application is assumed. However, the code samples are fully explained so that even beginners who are new to the area can learn a great deal from this book.
Today's multithreaded programs are riddled with bugs that can cause multiple threads to access shared data and interleave in ways that do not correspond to any sequential executions. These concurrency bugs give ri...
详细信息
Today's multithreaded programs are riddled with bugs that can cause multiple threads to access shared data and interleave in ways that do not correspond to any sequential executions. These concurrency bugs give rise to the problem of data-consistency errors, which can lead to drastic consequences (e.g., the Northeast Blackout of 2003). However, detecting concurrency bugs is difficult because these bugs are manifested only under very specific thread interleavings but the number of possible interleavings for a multithreaded program is often myriad. This thesis presents program analysis techniques to automatically verify that a multithreaded program correctly uses synchronization primitives to guarantee atomic-set serializability, a data-consistency criterion recently proposed for better detection of concurrency bugs. Atomic-set serializability characterizes a wide range of concurrency bugs. In addition, previous experiences using this criterion show that it is less likely to have benign violations than the other criteria. This thesis addresses the following two problems on detecting atomic-set serializability violations: inadequate interleaving coverage and inadequate input coverage. First, dynamic approaches are widely used to detect errors (e.g., malign data race) caused by concurrency bugs. Existing dynamic approaches for detecting such violations are based on runtime monitoring. Their effectiveness is restricted by the inadequate coverage of interleavings. To address this problem, this thesis proposes a dynamic predictive analysis technique that can infer potential violations from executions that are even violation-free, and an active randomized testing technique that can quickly confirm real violations reported by the dynamic predictive analysis technique. Second, for a given set of tests, our dynamic predictive analysis technique and active randomized testing technique partially alleviate the problem of inadequate coverage of thread interleaving. However, the in
It is a great challenge to build reliable computer systems with unreliable hardware and buggy software. On one hand, software bugs account for as much as 40% of system failures and incur high cost, an estimate of $59....
详细信息
It is a great challenge to build reliable computer systems with unreliable hardware and buggy software. On one hand, software bugs account for as much as 40% of system failures and incur high cost, an estimate of $59.5B a year, on the US economy. On the other hand, under the current trends of technology scaling, transient faults (also known as soft errors) in the underlying hardware are predicted to grow at least in proportion to the number of devices being integrated, which further exacerbates the problem of system reliability. We propose several methods to improve system reliability both in terms of detecting and correcting soft-errors as well as facilitating software debugging. In our first approach, we detect instruction-level anomalies during program execution. The anomalies can be used to detect and repair soft-errors, or can be reported to the programmer to aid software debugging. In our second approach, we improve anomaly detection for software debugging by detecting different types of anomalies as well as by removing false-positives. While the anomalies reported by our first two methods are helpful in debugging single-threaded programs, they do not address concurrency bugs in multi-threaded programs. In our third approach, we propose a new debugging primitive which exposes the non-deterministic behavior of parallel programs and facilitates the debugging process. Our idea is to generate a time-ordered trace of events such as function calls/returns and memory accesses in different threads. In our experience, exposing the time-ordered event information to the programmer is highly beneficial for reasoning about the root causes of concurrency bugs.
The article presents information on the Singularity computer operating system being designed at the research branch of Microsoft Corp. It is noted that the majority of existing computer code is based on standards esta...
详细信息
The article presents information on the Singularity computer operating system being designed at the research branch of Microsoft Corp. It is noted that the majority of existing computer code is based on standards established prior to the 1980s, and that an operating system designed with 21st-century software engineering capabilities would be capable of significant performance improvement. Information on the techniques and principles used in the Singularity project is provided. The system is designed to be self-describing at every level of abstraction, in order to improve correctness. The ability of the system to contain software bugs is also discussed.
The article discusses an article published in the journal which discusses computer patches that use evolutionary computation to find and repair computer bugs. The author discusses how search-based optimization can all...
详细信息
The article discusses an article published in the journal which discusses computer patches that use evolutionary computation to find and repair computer bugs. The author discusses how search-based optimization can allow software programmers to locate computer bugs using optimization algorithms, a process known as search based software engineering (SBSE).
The article discusses the microcontroller-to-field programmable gate array (FPGA) interface debugging. Microcontrollers and FPGAs coordinate in embedded systems by incorporating functions into the FPGAs, making the de...
详细信息
The article discusses the microcontroller-to-field programmable gate array (FPGA) interface debugging. Microcontrollers and FPGAs coordinate in embedded systems by incorporating functions into the FPGAs, making the debugging process become more difficult. The problem can be checked by using the Joint Test Action Group (JTAG) interface to communicate with the components through the use of the FPGA internal logic. The JTAG debugging tool consists of the data-capture circuit, JTAG communication circuit, and the graphical user interface.
暂无评论