符号执行 符号执行英語symbolic execution是一种计算机科学领域的程序分析技术通过采用抽象的符号代替精确值作为程序输入变量得出每个路径抽象的输出结果这一技术在硬件底层程序测试中有一定的应用能够有效的发现程序中的漏洞 这一思想最初由IBM托马斯J华森研究中心的詹姆斯C金James C King 于年月在论文Symbolic Execution and Program Testing中提出文中解析程序的路径后用符号模拟通过路径并获得输出的方法如今被称为经典符号执行由于世纪年代的研究追求分析的完备性而大型程序的路径复杂不可能完全遍历符号执行这一研究领域遇冷世纪后该领域研究有了新的进展年克里斯蒂安卡达尔Cristian Cadar在论文中设计了一种先进行符号执行后根据符号执行结果生成测试用例的执行生成测试技术并随后将其发展为应用在GNULinux内核错误检查中的KLEE年库希克森Koushik Sen在当年的软件工程自动化Automated Software Engineering会议提出将符号执行和实际执行结合的混合执行Concolic testing方法年维塔利奇波诺夫Vitaly Chipounov提出选择性符号执行方法通过选择对程序设计者有意义的执行分支进行符号执行测试来提高对大型程序应用符号执行测试的可行性 符号模拟技术symbolic simulation则把类似的思想用于电路分析符号计算Symbolic computation则用于数学表达式分析