DocumentCode :
2577977
Title :
Precise Detection of Uninitialized Variables Using Dynamic Analysis - Extending to Aggregate and Vector Types
Author :
Jana, Anindya ; Naik, Rajendra
Author_Institution :
TCS Innovation Labs., Software R&D Tata Res. Dev. & Design Centre, Pune, India
fYear :
2012
fDate :
15-18 Oct. 2012
Firstpage :
197
Lastpage :
201
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.
Keywords :
C language; COBOL; Java; program compilers; program diagnostics; public domain software; C language; COBOL language; Java language; array elements; binary instrumentation; data entries; dynamic analysis technique; false positives precision; instrumentation information; open source tools; programming language compilers; prototype tool; run-time failures; source instrumentation; static analysis technique; uninitialized variable detection; variable completeness; variable declaration; Arrays; Computational fluid dynamics; Data preprocessing; Instruments; Performance analysis; Prototypes; Runtime; Dynamic Program Analysis; Stati Program Analysis; Uninitialized Variable;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Reverse Engineering (WCRE), 2012 19th Working Conference on
Conference_Location :
Kingston, ON
ISSN :
1095-1350
Print_ISBN :
978-1-4673-4536-1
Type :
conf
DOI :
10.1109/WCRE.2012.29
Filename :
6385115
Link To Document :
بازگشت