首页> 外文期刊>ACM transactions on software engineering and methodology >Classifying Data Dependences in the Presence of Pointers for Program Comprehension, Testing, and Debugging
【24h】

Classifying Data Dependences in the Presence of Pointers for Program Comprehension, Testing, and Debugging

机译:在指针的存在下对数据依赖进行分类,以进行程序理解,测试和调试

获取原文
获取原文并翻译 | 示例

摘要

Understanding data dependences in programs is important for many software-engineering activities, such as program understanding, impact analysis, reverse engineering, and debugging. The presence of pointers can cause subtle and complex data dependences that can be difficult to understand. For example, in languages such as C, an assignment made through a pointer dereference can assign a value to one of several variables, none of which may appear syntactically in that statement. In the first part of this article, we describe two techniques for classifying data dependences in the presence of pointer dereferences. The first technique classifies data dependences based on definition type, use type, and path type. The second technique classifies data dependences based on span. We present empirical results to illustrate the distribution of data-dependence types and spans for a set of real C programs. In the second part of the article, we discuss two applications of the classification techniques. First, we investigate different ways in which the classification can be used to facilitate data-flow testing. We outline an approach that uses types and spans of data dependences to determine the appropriate verification technique for different data dependences; we present empirical results to illustrate the approach. Second, we present a new slicing approach that computes slices based on types of data dependences. Based on the new approach, we define an incremental slicing technique that computes a slice in multiple steps. We present empirical results to illustrate the sizes of incremental slices and the potential usefulness of incremental slicing for debugging.
机译:了解程序中的数据依赖关系对于许多软件工程活动很重要,例如程序理解,影响分析,逆向工程和调试。指针的存在会导致难以理解的细微和复杂的数据依赖性。例如,在诸如C的语言中,通过指针取消引用进行的赋值可以将值赋值给多个变量之一,在该语句中,任何一个都不能在语法上出现。在本文的第一部分中,我们描述了两种在指针取消引用的情况下对数据依赖性进行分类的技术。第一种技术根据定义类型,使用类型和路径类型对数据依赖性进行分类。第二种技术基于跨度对数据依赖性进行分类。我们提供经验结果来说明一组实际C程序的数据依赖类型和范围的分布。在本文的第二部分中,我们讨论了分类技术的两种应用。首先,我们研究了分类可用于促进数据流测试的不同方式。我们概述了一种使用数据依赖关系的类型和范围来确定不同数据依赖关系的适当验证技术的方法。我们通过实证结果来说明该方法。其次,我们提出了一种新的切片方法,该方法可以根据数据依赖类型来计算切片。基于新方法,我们定义了一种增量切片技术,该技术可以分多个步骤计算切片。我们提供经验结果来说明增量切片的大小以及增量切片对调试的潜在实用性。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号