大量数据显示调试程序失败

Tat W. Chan, Arun Lakhotia
{"title":"大量数据显示调试程序失败","authors":"Tat W. Chan, Arun Lakhotia","doi":"10.1002/(SICI)1096-908X(199803/04)10:2%3C111::AID-SMR167%3E3.0.CO;2-8","DOIUrl":null,"url":null,"abstract":"In debugging, a programmer often observes the values of program variables--the state--at various points of program execution. A large data may cause a program failure after several iterations, hence generating a large number of intermediate states. Debugging a program when the failure is exhibited by a large data is hard because the clues that may help in locating the fault are obscured by the large amount of information the programmer has to process. From a database of debugging experiences maintained at the Open University in the United Kingdom, we found cases where programmers had to abandon the debugging of such failures, while in other such cases programmers spent weeks and/or months doing debugging. \nClearly, a smaller data which exhibits the same failure should lead to the diagnosis of faults more quickly than its larger counterpart. In this dissertation, we investigate five techniques for deriving a smaller data that reproduces the failure as an original input data. We term such a smaller data a data slice. The process of creating a data slice is called data slicing. The five techniques are: invariance analysis, origin tracking, random elimination, input-output analysis, and program-specific heuristics. The choice of a technique for data slicing may be based on the properties of a program, classified by the relationship between the input and output elements. Once a data slice is obtained, other general purpose debugging techniques can be employed to locate the fault. Data slicing enables the programmer to debug failures exhibited by a large data more efficiently, and, more importantly, to proceed with debugging tasks in cases where it seems impossible otherwise.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"6 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1994-12-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"9","resultStr":"{\"title\":\"Debugging program failure exhibited by voluminous data\",\"authors\":\"Tat W. Chan, Arun Lakhotia\",\"doi\":\"10.1002/(SICI)1096-908X(199803/04)10:2%3C111::AID-SMR167%3E3.0.CO;2-8\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"In debugging, a programmer often observes the values of program variables--the state--at various points of program execution. A large data may cause a program failure after several iterations, hence generating a large number of intermediate states. Debugging a program when the failure is exhibited by a large data is hard because the clues that may help in locating the fault are obscured by the large amount of information the programmer has to process. From a database of debugging experiences maintained at the Open University in the United Kingdom, we found cases where programmers had to abandon the debugging of such failures, while in other such cases programmers spent weeks and/or months doing debugging. \\nClearly, a smaller data which exhibits the same failure should lead to the diagnosis of faults more quickly than its larger counterpart. In this dissertation, we investigate five techniques for deriving a smaller data that reproduces the failure as an original input data. We term such a smaller data a data slice. The process of creating a data slice is called data slicing. The five techniques are: invariance analysis, origin tracking, random elimination, input-output analysis, and program-specific heuristics. The choice of a technique for data slicing may be based on the properties of a program, classified by the relationship between the input and output elements. Once a data slice is obtained, other general purpose debugging techniques can be employed to locate the fault. Data slicing enables the programmer to debug failures exhibited by a large data more efficiently, and, more importantly, to proceed with debugging tasks in cases where it seems impossible otherwise.\",\"PeriodicalId\":383619,\"journal\":{\"name\":\"J. Softw. Maintenance Res. Pract.\",\"volume\":\"6 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1994-12-15\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"9\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"J. Softw. Maintenance Res. Pract.\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1002/(SICI)1096-908X(199803/04)10:2%3C111::AID-SMR167%3E3.0.CO;2-8\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"J. Softw. Maintenance Res. Pract.","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1002/(SICI)1096-908X(199803/04)10:2%3C111::AID-SMR167%3E3.0.CO;2-8","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 9

摘要

在调试中,程序员经常在程序执行的各个点观察程序变量的值——状态。大数据可能会导致程序在多次迭代后出现故障,从而产生大量的中间状态。当故障由大量数据显示时,调试程序是困难的,因为可能有助于定位故障的线索被程序员必须处理的大量信息所掩盖。从英国开放大学维护的调试经验数据库中,我们发现程序员不得不放弃此类故障的调试,而在其他此类情况下,程序员花费数周和/或数月进行调试。显然,显示相同故障的较小数据应该比较大的对应数据更快地导致故障诊断。在这篇论文中,我们研究了五种技术来获得一个较小的数据,以再现故障作为原始输入数据。我们称这样的小数据为数据片。创建数据片的过程称为数据切片。这五种技术是:不变性分析、起源跟踪、随机消除、输入-输出分析和特定于程序的启发式。数据切片技术的选择可以基于程序的属性,根据输入和输出元素之间的关系进行分类。一旦获得了数据片,就可以使用其他通用调试技术来定位故障。数据切片使程序员能够更有效地调试大数据所显示的故障,更重要的是,在似乎不可能的情况下继续调试任务。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Debugging program failure exhibited by voluminous data
In debugging, a programmer often observes the values of program variables--the state--at various points of program execution. A large data may cause a program failure after several iterations, hence generating a large number of intermediate states. Debugging a program when the failure is exhibited by a large data is hard because the clues that may help in locating the fault are obscured by the large amount of information the programmer has to process. From a database of debugging experiences maintained at the Open University in the United Kingdom, we found cases where programmers had to abandon the debugging of such failures, while in other such cases programmers spent weeks and/or months doing debugging. Clearly, a smaller data which exhibits the same failure should lead to the diagnosis of faults more quickly than its larger counterpart. In this dissertation, we investigate five techniques for deriving a smaller data that reproduces the failure as an original input data. We term such a smaller data a data slice. The process of creating a data slice is called data slicing. The five techniques are: invariance analysis, origin tracking, random elimination, input-output analysis, and program-specific heuristics. The choice of a technique for data slicing may be based on the properties of a program, classified by the relationship between the input and output elements. Once a data slice is obtained, other general purpose debugging techniques can be employed to locate the fault. Data slicing enables the programmer to debug failures exhibited by a large data more efficiently, and, more importantly, to proceed with debugging tasks in cases where it seems impossible otherwise.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信