Directed Incremental Symbolic Execution

被引:41
|
作者
Person, Suzette [1 ]
Yang, Guowei [3 ]
Rungta, Neha [2 ]
Khurshid, Sarfraz [3 ]
机构
[1] NASA, Langley Res Ctr, Washington, DC 20546 USA
[2] NASA, Ames Res Ctr, Washington, DC 20546 USA
[3] Univ Texas Austin, Austin, TX 78712 USA
关键词
Verification; Algorithms; Program Differencing; Symbolic Execution; Software Evolution;
D O I
10.1145/1993316.1993558
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The last few years have seen a resurgence of interest in the use of symbolic execution - a program analysis technique developed more than three decades ago to analyze program execution paths. Scaling symbolic execution and other path-sensitive analysis techniques to large systems remains challenging despite recent algorithmic and technological advances. An alternative to solving the problem of scalability is to reduce the scope of the analysis. One approach that is widely studied in the context of regression analysis is to analyze the differences between two related program versions. While such an approach is intuitive in theory, finding efficient and precise ways to identify program differences, and characterize their effects on how the program executes has proved challenging in practice. In this paper, we present Directed Incremental Symbolic Execution (DiSE), a novel technique for detecting and characterizing the effects of program changes. The novelty of DiSE is to combine the efficiencies of static analysis techniques to compute program difference information with the precision of symbolic execution to explore program execution paths and generate path conditions affected by the differences. DiSE is a complementary technique to other reduction or bounding techniques developed to improve symbolic execution. Furthermore, DiSE does not require analysis results to be carried forward as the software evolves-only the source code for two related program versions is required. A case-study of our implementation of DiSE illustrates its effectiveness at detecting and characterizing the effects of program changes.
引用
收藏
页码:504 / 515
页数:12
相关论文
共 50 条
  • [21] SYMBOLIC EXECUTION AND TESTING
    COWARD, PD
    INFORMATION AND SOFTWARE TECHNOLOGY, 1991, 33 (01) : 53 - 64
  • [22] Unit Test Data Generation for C Using Rule-Directed Symbolic Execution
    Ming-Zhe Zhang
    Yun-Zhan Gong
    Ya-Wen Wang
    Da-Hai Jin
    Journal of Computer Science and Technology, 2019, 34 : 670 - 689
  • [23] Unit Test Data Generation for C Using Rule-Directed Symbolic Execution
    Zhang, Ming-Zhe
    Gong, Yun-Zhan
    Wang, Ya-Wen
    Jin, Da-Hai
    JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, 2019, 34 (03) : 670 - 689
  • [24] Symbolic Router Execution
    Zhang, Peng
    Wang, Dan
    Gember-Jacobson, Aaron
    SIGCOMM '22: PROCEEDINGS OF THE 2022 ACM SIGCOMM 2022 CONFERENCE, 2022, : 336 - 349
  • [25] Symbolic Execution of Programmable Logic Controller Code
    Guo, Shengjian
    Wu, Meng
    Wang, Chao
    ESEC/FSE 2017: PROCEEDINGS OF THE 2017 11TH JOINT MEETING ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2017, : 326 - 336
  • [26] Symbolic Execution for Quantum Error Correction Programs
    Fang, Wang
    Ying, Mingsheng
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (PLDI):
  • [27] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Martin Hentschel
    Richard Bubel
    Reiner Hähnle
    International Journal on Software Tools for Technology Transfer, 2019, 21 : 485 - 513
  • [28] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Hentschel, Martin
    Bubel, Richard
    Haehnle, Reiner
    INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2019, 21 (05) : 485 - 513
  • [29] Towards Symbolic Execution in Erlang
    Vidal, German
    PERSPECTIVES OF SYSTEM INFORMATICS, PSI 2014, 2015, 8974 : 351 - 360
  • [30] Symbolic Execution for Randomized Programs
    Susag, Zachary
    Lahiri, Sumit
    Hsu, Justin
    Roy, Subhajit
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2022, 6 (OOPSLA):