文件Open Access徽标

学习通过代码转换加速符号执行

作者 陈俊杰, 胡文祥, 张玲明, 丹昊(Dan Hao), 萨尔夫拉兹·库希德, 陆章



PDF格式
缩略图PDF

文件

LIPIcs公司。ECOOP.2018.6.pdf版
  • 文件大小:0.88 MB
  • 27页

文件标识符

作者详细信息

陈俊杰
  • 高可信软件技术重点实验室(北京大学),教育部,EECS软件研究所,北京大学,北京,100871
胡文祥
  • 高可信软件技术重点实验室(北京大学),教育部,EECS软件研究所,北京大学,北京,100871
张玲明
  • 德克萨斯大学达拉斯分校计算机科学系,75080,美国
丹昊(Dan Hao)
  • 高可信软件技术重点实验室(北京大学),教育部,EECS软件研究所,北京大学,北京,100871
萨尔夫拉兹·库希德
  • 德克萨斯大学奥斯汀分校电气与计算机工程系,78712,美国
陆章
  • 高可信软件技术重点实验室(北京大学),教育部,EECS软件研究所,北京大学,北京,100871

引用为获取BibTex

陈俊杰(Junjie Chen)、胡文祥(Wenxiang Hu)、张玲明(Lingming Zhang)、郝丹(Dan Hao)、库尔希德(Sarfraz Khurshid)和张璐(Lu Zhang。学习通过代码转换加速符号执行。第32届欧洲面向对象编程会议(ECOOP 2018)。莱布尼茨国际信息学论文集(LIPIcs),第109卷,第6:1-6:27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2018)
https://doi.org/10.4230/LIPIcs.ECOOP.2018.6

摘要

符号执行是一种有效但昂贵的自动测试生成技术。多年来,人们提出了大量改进的符号执行技术来提高其效率。然而,符号执行效率问题依然存在,极大地限制了符号执行在实践中的应用。正交到精细符号执行,本文提出通过在目标程序上进行语义保持代码转换来加速符号执行。在这个方向的初始阶段,我们采用了一种特殊的代码转换,即编译器优化,最初提出通过将源程序转换为另一个效率更高(例如更快或更小)的语义保持目标程序来加速程序的具体执行。然而,编译器优化主要是为了加速程序的具体执行,而不是符号执行。最近的工作还报告称,编译器优化的统一设置根本不存在,这些优化可以加速任何程序的符号执行。因此,在这项工作中,我们提出了一种基于机器学习的方法来调整编译器优化以加速符号执行,其结果也可能有助于进一步设计用于符号执行的特定代码转换。特别是,所提出的方法LEO通过我们的程序分割器分离源代码函数和库,并通过分析现有符号执行的性能,分别预测单个编译器的优化(即是否选择代码转换类型)。最后,LEO对编译器优化(通过我们的local-optimizer)转换的代码应用符号执行。我们使用KLEE符号执行引擎对GNU Coreutils程序进行了实证研究。结果表明,LEO显著加快了符号执行,在各种设置下都优于默认的KLEE配置(即打开/关闭所有编译器优化),例如,在默认的训练/测试时间下,LEO在50/68个程序中实现了最高的行覆盖率,与打开/关闭所有编译器优化相比,它在所有程序上的平均改进率在行覆盖率方面为46.48%/88.92%。

主题分类

ACM科目分类
  • 软件及其工程→软件测试和调试
关键词
  • 象征性执行
  • 代码转换
  • 机器学习

韵律学

工具书类

  1. F.Agakov、E.Bonilla、J.Cavazos、B.Franke、G.Fursin、M.F.P.O'Boyle、J.Thomson、M.Toussaint和C.K.I.Williams。使用机器学习关注迭代优化。在CGO中,第295-305页,2006年。谷歌学者
  2. Alfred V Aho、Ravi Sethi和Jeffrey D Ullman。编译程序、原理和技术。皮尔逊教育公司,1986年。谷歌学者
  3. 阿尔巴古蒂、阿里·古芬克尔、欧伟和玛莎·切奇克。符号执行的抽象分析。在CAV中,第495-510页,2010年。谷歌学者
  4. 萨斯瓦特·阿南德、亚历山德罗·奥索和玛丽·让·哈罗尔德。符号执行的类型依赖性分析和程序转换。在TACAS中,第117-133页,2007年。谷歌学者
  5. J.H.Andrews、L.C.Briand和Y.Labiche。变异是测试实验的合适工具吗?在ICSE中,第402-411页,2005年。谷歌学者
  6. Tien Duy B Le、David Lo、Claire Le Goues和Lars Grunske。使用可能不变量的基于学习到秩的故障定位方法。ISSTA,第177-188页,2016年。谷歌学者
  7. 安德烈·巴泽尔(AndréBaresel)、大卫·宾克利(David Binkley)、马克·哈曼(Mark Harman)和博格丹·科雷尔(Bogdan Korel)。存在循环分配标志的进化测试:一种可测试性转换方法。ISSTA,第108-118页,2004年。谷歌学者
  8. David W.Binkley、Mark Harman和Kiran Lakhotia。Flagremover:用于转换循环分配标志的可测试性转换。TOSEM,20(3):2011年12月1日-12:33日。谷歌学者
  9. 弗朗索瓦·博丹(François Bodin)、托鲁·基苏基(Toru Kisuki)、彼得·克尼恩伯格(Peter Knijnenburg)、迈克·奥博伊尔(Mike O’Boyle)和埃尔文·罗霍(Erven Rohou)。非线性优化空间中的迭代编译。PFDC,1998年。谷歌学者
  10. 彼得罗·布雷奥内(Pietro Braione)、乔瓦尼·德纳罗(Giovanni Denaro)和毛罗·佩泽尔(Mauro Pezzè)。通过内置的术语重写和受约束的延迟初始化增强符号执行。FSE,第411-421页,2013年。谷歌学者
  11. 彼得罗·布雷奥内(Pietro Braione)、乔瓦尼·德纳罗(Giovanni Denaro)和毛罗·佩泽尔(Mauro Pezzè)。用堆输入符号执行程序。在FSE中,第602-6132015页。谷歌学者
  12. 利奥·布雷曼(Leo Breiman)。随机森林。机器学习,45(1):5-322001。谷歌学者
  13. William R Bush、Jonathan D Pincus和David J Sielaff。用于查找动态编程错误的静态分析器。SPE,30(7):775-8022000年。谷歌学者
  14. 克里斯蒂安·卡达尔。符号执行的目标程序转换。FSE,第906-909页,2015年。谷歌学者
  15. 克里斯蒂安·卡达尔、丹尼尔·邓巴和道森·恩格勒。KLEE:为复杂系统程序自动生成高覆盖率测试。在OSDI中,第209-224页,2008年。谷歌学者
  16. 克里斯蒂安·卡达尔(Cristian Cadar)、维杰·甘内什(Vijay Ganesh)、彼得·保罗夫斯基(Peter M.Pawlowski)、大卫·迪尔(David L.Dill)和道森·恩格尔(Dawson R.Engler)。Exe:自动生成死亡输入。TISSEC,12(2):2008年10月。谷歌学者
  17. Cristian Cadar、Patrice Godefroid、Sarfraz Khurshid、Corina SăSăreanu、Koushik Sen、Nikolai Tillmann和Willem Visser。软件测试的符号执行:初步评估。在ICSE中,第1066-1071页,2011年。谷歌学者
  18. Cristian Cadar和Koushik Sen.软件测试的象征性执行:三十年后。CACM,56(2):82-902013年。谷歌学者
  19. 约翰·卡瓦佐斯(John Cavazos)、格里戈里·弗辛(Grigori Fursin)、费利克斯·阿加科夫(Felix Agakov)、埃德温·博尼拉(Edwin Bonilla)、迈克尔·F·P·奥博伊尔(Michael F.P.O'Boyle)和。使用性能计数器快速选择好的编译器优化。在CGO中,第185-197页,2007年。谷歌学者
  20. 加文·考利(Gavin C Cawley)和尼古拉·勒克·塔尔博特(Nicola LC Talbot)。核fisher鉴别分类器的高效leave-on-out交叉验证。模式识别,36(11):2585-2592003。谷歌学者
  21. 尼特斯五世·查拉。不平衡数据集的数据挖掘:概述。在数据最小知识中。发现。,第853-867页。斯普林格,2005年。谷歌学者
  22. 尼特斯·查拉(Nitesh V.Chawla)、凯文·鲍耶(Kevin W.Bowyer)、劳伦斯·奥·霍尔(Lawrence O.Hall)和菲利普·凯格梅耶(W.Philip Kegelmeyer)。烟熏:合成少数人过采样技术。JAIR,第321-357页,2002年。谷歌学者
  23. 尼特斯·查拉(Nitesh V.Chawla)、纳塔莉·贾普科维奇(Nathalie Japkowicz)和亚历山大·科茨(Aleksander Kotcz)。社论:关于从不平衡数据集学习的特刊。SIGKDD Explor,6(1):1-62004年。谷歌学者
  24. 陈俊杰(Junjie Chen)、白燕伟(Yanwei Bai)、丹浩(Dan Hao)、熊英飞(Yingfei Xiong)、张红玉(Hongyu Zhang)和谢冰冰(Bing Xie)。学习为编译器测试确定测试程序的优先级。在ICSE中,第700-711页,2017年。谷歌学者
  25. 陈俊杰、白燕伟、单昊、张玲明、张璐和谢冰。断言如何影响基于覆盖率的测试套件缩减?在ICST中,第418-423页,2017年。谷歌学者
  26. 陈俊杰(Junjie Chen)、白燕伟(Yanwei Bai)、郝丹(Dan Hao)、张玲明(Lingming Zhang)、张璐(Lu Zhang,Bing Xie)和洪梅(Hong Mei)。通过静态分析支持oracle构建。在ASE中,第178-189页,2016年。谷歌学者
  27. 陈俊杰、胡文祥、单昊、熊英飞、张红玉、张璐和谢冰。编译器测试技术的经验比较。在ICSE中,第180-190页,2016年。谷歌学者
  28. 玛丽亚·克里斯塔基斯(Maria Christakis)、彼得·穆勒(Peter Müller)和瓦伦丁·沃斯特霍尔茨(Valentin Wüstholz)。将动态符号执行导向未验证的程序执行。在ICSE中,第144-155页,2016年。谷歌学者
  29. Lori A.Clarke。生成测试数据并象征性地执行程序的系统。TSE,SE-2(3):215-2221976。网址:http://dx.doi.org/10.109/TSE.1976.233817.
  30. 海斯·匡威(Hayes Converse)、奥斯瓦尔多·奥利沃(Oswaldo Olivo)和萨尔夫拉兹·库希德(Sarfraz Khurshid)。使用符号执行生成高覆盖率测试的非语义保持转换。在ICST中,第241-252页,2017年。谷歌学者
  31. 海耶斯·埃利奥特·匡威(Hayes Elliott Converse)、奥斯瓦尔多·奥利沃(Oswaldo Olivo)和萨尔夫拉兹·库希德(Sarfraz Khurshid)。使用符号执行生成更高平均测试的非语义保留转换。德克萨斯大学奥斯汀分校博士论文,2017年。谷歌学者
  32. 基思·库珀(Keith D Cooper)、亚历山大·格罗苏尔(Alexander Grosul)、蒂莫西·哈维(Timothy J Harvey)、史蒂夫·里维斯(Steve Reeves)、德维卡·苏布拉曼尼安(Devika Subramanian)、琳达·托克森(Lin。使用随机搜索算法探索编译序列的空间结构。超级计算机杂志,36(2):135-1512006。谷歌学者
  33. Shiyu Dong、Oswaldo Olivo、Lingming Zhang和Sarfraz Khurshid。研究标准编译器优化对符号执行的影响。ISSRE,第205-215页,2015年。谷歌学者
  34. 伊克佩梅·埃雷特和亚历山德罗·奥索。优化约束求解以更好地支持符号执行。在ICSTW中,第310-315页,2011年。谷歌学者
  35. 安东尼奥·菲利埃里(Antonio Filieri)、科琳娜·斯佩斯雷努(Corina S.PSreanu)、威廉·维瑟(Willem Visser)和杰科·盖尔登胡伊斯。知情抽样的统计符号执行。FSE,第437-448页,2014年。谷歌学者
  36. 尤夫·弗伦德和卢·梅森。交替决策树学习算法。在ICML中,第124-133页,1999年。谷歌学者
  37. Jerome Friedman、Trevor Hastie、Robert Tibshirani等人。加性逻辑回归:助推的统计观点(作者进行了讨论和反驳)。Ann.Stat.,28(2):337-4072000年。谷歌学者
  38. 格里戈里·弗辛、尤里·卡什尼科夫、阿卜杜勒·瓦希德·梅隆、兹比格尼乌·查姆斯基、奥利维尔·特曼、米尔恰·纳莫拉鲁、埃拉·尤姆·托夫、比尔哈·门德尔森、阿亚尔·扎克斯、埃里克·科托瓦、弗朗索瓦斯·博登、菲尔·巴纳德、埃尔顿·阿什顿、埃德温·博尼拉、约翰·汤姆森、克里斯托弗·威廉姆斯和迈克尔·奥博伊尔。里程碑gcc:支持机器学习的自调优编译器。国际JPP,39(3):296-3272011年。谷歌学者
  39. 杰科·盖尔登胡伊斯(Jaco Geldenhuys)、马修·德怀尔(Matthew B.Dwyer)和威廉·维瑟(Willem Visser)。概率符号执行。ISSTA,第166-176页,2012年。谷歌学者
  40. 亚历山大·根金(Alexander Genkin)、大卫·刘易斯(David D Lewis)和大卫·马迪根(David Madigan)。用于文本分类的大规模贝叶斯逻辑回归。技术计量学,49(3):291-304,2007。谷歌学者
  41. 帕特里斯·戈德弗里德。合成动态测试生成。在POPL中,第47-54页,2007年。谷歌学者
  42. Patrice Godefroid、Nils Klarlund和Koushik Sen.DART:指导自动化随机测试。在PLDI中,第213-2232005页。谷歌学者
  43. Patrice Godefroid、Shuvendu K.Lahiri和Cindy Rubio-González。静态验证必须总结增量合成动态测试生成。《第18届国际静态分析会议论文集》,SAS’11,第112-128页,柏林,海德堡,2011年。斯普林格·弗拉格。网址:http://dl.acm.org/citation.cfm?id=2041552.2041564.
  44. Patrice Godefroid、Aditya V.Nori、Sriram K.Rajamani和Sai Deep Tetali。组合可能必须的程序分析:释放交替的力量。在POPL中,第43-56页,2010年。谷歌学者
  45. 郭胜建、贵霜和王超。简明:并发软件的增量符号执行。在ASE中,第531-542页,2016年。谷歌学者
  46. Mark Harman、AndréBaresel、David Binkley、Robert Hierons、Lin Hu、Bogdan Korel、Phil McMinn和Marc Roper。可测试性转换—用于提高可测试性的程序转换。在正式方法和测试中,第320-344页。施普林格,2008年。谷歌学者
  47. Kenneth Hoste和Lieven Eeckhout。科尔:编译器优化级别探索。在CGO中,第165-174页,2008年。谷歌学者
  48. Y Kumar Jain和Santosh Kumar Bhandare。基于最小最大归一化的隐私保护数据扰动方法。IJRCCT,2(8):45-502011年。谷歌学者
  49. 康拉德·贾姆罗西克(Konrad Jamrozik)、戈登·弗雷泽(Gordon Fraser)、尼古拉·蒂尔曼(Nikolai Tillmann)和乔纳森·德哈勒克斯(Jonathan De Halleux)。增强的动态符号执行。在ASE中,第254-2572012页。谷歌学者
  50. Jinseong Jeon、Xiaokang Qiu、Jonathan Fetter-Degges、Jeffrey S.Foster和Armando Solar-Lezama。为符号执行合成框架模型。在ICSE中,第156-167页,2016年。谷歌学者
  51. 勒内·贾斯特(Rene Just)、达里奥乌什·贾拉利(Darioush Jalali)、劳拉·伊诺泽姆采娃(Laura Inozemtseva)、迈克尔·D·恩斯特(Michael D Ernst)、里德·霍姆斯(Reid Holmes)和戈登·弗雷。在软件测试中,变种是真正错误的有效替代品吗?FSE,第654-665页,2014年。谷歌学者
  52. 詹姆斯·C·金。符号执行和程序测试。CACM,19(7):385-3941976。谷歌学者
  53. Bogdan Korel、Mark Harman、S.Chung、P.Apirukvorapinit、R.Gupta和Q.Zhang。自动化测试生成中基于数据依赖的可测试性转换。ISSRE,第245-254页,2005年。谷歌学者
  54. 托马斯·库赫塔(Tomasz Kuchta)、克里斯蒂安·卡达尔(Cristian Cadar)、米盖尔·卡斯特罗(Miguel Castro)和曼努埃尔·科斯塔(Manuel Costa)。文档恢复:面向通用的自动文档恢复。在ASE中,第563-574页,2014年。谷歌学者
  55. Chris Lattner和Vikram Adve。Llvm:用于终身程序分析和转换的编译框架。在CGO中,第75-86页,2004年。谷歌学者
  56. Saskia Le Cessie和Johannes C Van Houwelingen。逻辑回归中的岭估计。应用统计学,第191-201页,1992年。谷歌学者
  57. 尤莉、苏振东、王林章和李宣东。将象征性的执行引导至人行横道。在OOPSLA中,2013年第19-32页。谷歌学者
  58. Daniel Liew、Cristian Cadar和Alastair F.Donaldson。Symbooglix:用于boogie程序的符号执行引擎。ICST,2016年。谷歌学者
  59. 卡斯珀·勒科夫(Kasper Luckow)、科琳娜·帕斯雷努(Corina S.PSreanu)、马修·德怀尔(Matthew B.Dwyer)、安东尼奥·菲列里(Antonio Filieri)和威廉·维瑟。非确定性程序的精确和近似概率符号执行。2014年,ASE第575-586页。谷歌学者
  60. P.D.Marinescu和Cristian Cadar。KATCH:软件补丁的高平均测试。FSE,第235-245页,2013年。谷歌学者
  61. 保罗·丹·马林内斯库和克里斯蒂安·卡达尔。高平均符号补丁测试。在SPIN中,2012年第7-21页。谷歌学者
  62. 保罗·丹·马林内斯库和克里斯蒂安·卡达尔。Make test-zesti:用于改进回归测试的符号执行解决方案。在ICSE中,第716-7262012页。谷歌学者
  63. 小弗兰克·J·梅西(Frank J Massey Jr.):科尔莫戈罗夫·斯米尔诺夫(kolmogorov-smirnov)拟合优度测试。JASA,46(253):68-781951年。谷歌学者
  64. 潘哲龙和鲁道夫·艾根曼。快速有效地编排编译器优化以实现自动性能调整。在CGO中,第319-3322006页。谷歌学者
  65. 科琳娜·斯佩斯雷努和尼哈·隆塔。符号探索者:java字节码的符号执行。在ASE中,第179-180页,2010年。谷歌学者
  66. David M Perry、Andrea Mattavelli、Xiangyu Zhang和Cristian Cadar。加速符号执行中的数组约束。ISSTA,第68-78页,2017年。谷歌学者
  67. Suzette Person、Matthew B.Dwyer、Sebastian Elbaum和Corina S.PáSáreanu。差异符号执行。FSE,第226-237页,2008年。谷歌学者
  68. Suzette Person、Guowe Yang、Neha Rungta和Sarfraz Khurshid。定向增量符号执行。PLDI,第504-515页,2011年。谷歌学者
  69. 约翰·普拉特。序列最小优化:一种训练支持向量机的快速算法。技术报告MSR-TR-98-14,Microsoft Research,1998年4月。谷歌学者
  70. Rui Qiu、Sarfraz Khurshid、Corina S Pa'Sérenau、Junye Wen和Guowei Yang。使用测试范围改进符号执行。在NFM中,第416-434页。施普林格,2018年。谷歌学者
  71. Rui Qiu、Corina S PéSéreanu和Sarfraz Khurshid。经认证的符号执行。在ATVA中,第495-511页。斯普林格,2016年。谷歌学者
  72. Rui Qiu、Guowei Yang、Corina S.P'Séreanu和Sarfraz Khurshid。带记忆重放的组合符号执行。ICSE,第632-642页,2015年。谷歌学者
  73. Eric F.Rizzi、Mathew B.Dwyer和Sebastian Elbaum。通过读/写分析安全地降低单元级符号执行的成本。SEN,39(1):1-52014年。谷歌学者
  74. Koushik Sen、Darko Marinov和Gul Agha。CUTE:C的混合单元测试引擎。FSE,第263-272页,2005年。谷歌学者
  75. Koushik Sen、George Necula、Liang Gong和Wontae Choi。Multise:使用值摘要的多路径符号执行。在FSE中,第842-8532015页。谷歌学者
  76. 朱奈德·哈龙·西迪基(Junaid Haroon Siddiqui)和萨尔夫拉兹·库尔希德(Sarfraz Khurshid)。ParSym:并行符号执行。在ICSTE中,第V1-405-V1-4092010页。谷歌学者
  77. 朱奈德·哈龙·西迪基(Junaid Haroon Siddiqui)和萨尔夫拉兹·库尔希德(Sarfraz Khurshid)。使用范围分析缩放符号执行。在OOPSLA中,第47卷,第523-536页,2012年。谷歌学者
  78. Matt Staats和Corina Pásáreanu。结构测试生成的并行符号执行。在ISSTA,第183-1942010页。谷歌学者
  79. Kunal Taneja、Tao Xie、Nikolai Tillmann和Jonathan de Halleux。express:高效回归测试生成的引导路径探索。ISSTA,第1-11页,2011年。谷歌学者
  80. 唐浩、王晓音、张玲明、谢冰、张璐和洪梅。存在回调时基于摘要的上下文相关数据依赖性分析。《持久性有机污染物清单》,第50卷,第83-95页,2015年。谷歌学者
  81. 尼古拉·蒂尔曼和乔纳森·德哈勒克斯。.net的Pex-白盒测试生成。在TAP中,第134-153页。施普林格,2008年。谷歌学者
  82. 丽莎·托里和裘德·沙夫利克。转移学习。机器学习应用和趋势研究手册:算法、方法和技术,1:2422009。谷歌学者
  83. Willem Visser、Jaco Geldenhuys和Matthew B.Dwyer。绿色:减少、重用和回收程序分析中的约束。FSE,第58:1-58:11页,2012年。谷歌学者
  84. 乔纳斯·瓦格纳(Jonas Wagner)、沃洛德米尔·库兹涅佐夫(Volodymyr Kuznetsov)和乔治·坎迪亚(George Candea)-overify:优化程序以进行快速验证。在HotOS XIV中。EPFL-CONF-1860122013年。谷歌学者
  85. Tao Wang、Abhik Roychoudhury、Roland HC Yap和Shishir C Choudhary。行为要求的象征性执行。PADL,第178-192页。斯普林格,2004年。谷歌学者
  86. 王晓音、张玲明和菲利普·塔诺夫斯基。经验报告:动态符号执行与手动测试有何不同?关于克莱的研究。ISSTA,第199-210页,2015年。谷歌学者
  87. Edmund Wong、Lei Zhang、Song Wang、Taiyue Liu和Lin Tan。Dase:文档辅助符号执行,用于改进自动化软件测试。ICSE,第620-631页,2015年。谷歌学者
  88. 杨国伟(Guowei Yang)、科琳娜(Corina S Pa'Séreanu)和萨尔夫拉兹·库希德(Sarfraz Khurshid)。记忆符号执行。ISSTA,第144-154页,2012年。谷歌学者
问题/备注/反馈
X(X)

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

请稍后再试或发送电子邮件