Files in this item



application/pdfSP20-ECE499-Thesis-Zhang, Carl.pdf (345kB)
(no description provided)PDF


Title:Using concolic execution to identify IA32 program errors
Author(s):Zhang, Haoyang
Contributor(s):Lumetta, Steven
Subject(s):Concolic Execution
Symbolic Execution
Lexical Analysis
Control Flow Analysis
Abstract:In computer science education, one of the most important tasks is to provide students with feedback that can help them discover errors in their assignment code. Traditionally, this check is achieved by executing a series of pre-defined test cases. But many bugs are not easily exposed by such test cases, which are thus insufficient for fair grading. Furthermore, failed test cases give students little feedback as to how to fix their code. In the last decade, tools have been developed for code testing that aim at achieving high code coverage even in strict environments, such as interacting with the operating system. These tools can be helpful if applied in computer science education. Among these tools, KLEE is particularly designed for improving control flow paths coverage by exploring different execution paths in the program using concolic execution. In this thesis, we investigate the possibility of using concolic execution with KLEE to generate feedback for student assignments written in IA32 (32-bit version of x86) assembly, like the MP1 in our operating systems course (ECE391). By developing tools for lexical and control flow analysis to translate IA32 to C, we were able to take advantage of KLEE to explore the program’s execution path thoroughly to generate test cases and feedback that can be helpful for students to detect problems in their programs. The initial test shows that among the 180 student codes, our tool picked up 139 cases that contain errors compared to the 105 cases that got picked up by the normal grader, and that all student codes that have errors detected by the grader have been detected to contain errors by our tool.
Issue Date:2020-05
Date Available in IDEALS:2020-06-12

This item appears in the following Collection(s)

Item Statistics