Abstract:
Uninitialized variable is a variable in a program that is declared but is not assigned a definite known value before it is used. Compilers of modern programming languages...Show MoreMetadata
Abstract:
Uninitialized variable is a variable in a program that is declared but is not assigned a definite known value before it is used. Compilers of modern programming languages (like Java) check for their presence, but in languages like C and COBOL, they are a critical reason for incorrect results, wrong data entries, and run-time failures. Tools based on static and dynamic analysis techniques are available that detect use of uninitialized variables. However, the static analysis tools face the issue of false positives (precision) while the dynamic analysis tools are not able to cover all the classes of variables (completeness). In this paper, we present a technique based on dynamic program analysis and results of the prototype tool to detect the first use of uninitialized variables. Using a combination of source and binary instrumentation, the technique is able to track variables of basic types, individual array elements, and fields of structures. We verified the completeness and precision of the technique using two open source case-studies with very large input datasets. We present the comparison of the results with other open source tools. The prototype tool is a clear winner in terms of precision and the coverage of variables, but more work is required to further optimize the size of instrumentation information, and the performance of its analyzer.
Published in: 2012 19th Working Conference on Reverse Engineering
Date of Conference: 15-18 October 2012
Date Added to IEEE Xplore: 20 December 2012
ISBN Information: