Calling-to-reference context translation via constraint-guided CFL-reachability

Calling-to-reference context translation via constraint-guided CFL-reachability
复制标题

DOI:
10.1145/3192366.3192378
复制
发表时间:
2018-06
期刊:
Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
通讯作者:
Cheng Cai;Qirun Zhang;Zhiqiang Zuo;Khanh Nguyen;G. Xu;Z. Su
Cheng Cai;Qirun Zhang;Zhiqiang Zuo;Khanh Nguyen;G. Xu;Z. Su
中科院分区:
其他
文献类型:
--
作者:
Cheng Cai;Qirun Zhang;Zhiqiang Zuo;Khanh Nguyen;G. Xu;Z. Su

文献摘要

被引文献

相似文献

调用上下文是广泛用于帮助开发人员理解程序执行的重要信息(例如,用于调试)。虽然调用上下文提供了有用的控制信息,但关于错误中涉及的数据的信息(例如,什么样的数据结构保存了一个泄漏的对象),在许多情况下,可以使开发人员更接近bug的根本原因。这些数据信息,通常表现为堆引用路径,已经被许多工具所需要。动态分析记录完整引用路径的唯一方法是执行堆转储,这会导致巨大的运行时开销,并使分析变得不切实际。本文提出了一种新的静态分析,可以精确地推断,从调用上下文的方法,其中包含一个使用(例如,读或写)时,堆引用路径在使用发生时指向对象。由于调用上下文记录的成本要低得多,我们的技术为所有需要堆信息的动态技术提供了好处,大大减少了它们的开销。
A calling context is an important piece of information used widely to help developers understand program executions (e.g., for debugging). While calling contexts offer useful control information, information regarding data involved in a bug (e.g., what data structure holds a leaking object), in many cases, can bring developers closer to the bug's root cause. Such data information, often exhibited as heap reference paths, has already been needed by many tools. The only way for a dynamic analysis to record complete reference paths is to perform heap dumping, which incurs huge runtime overhead and renders the analysis impractical. This paper presents a novel static analysis that can precisely infer, from a calling context of a method that contains a use (e.g., read or write) of an object, the heap reference paths leading to the object at the time the use occurs. Since calling context recording is much less expensive, our technique provides benefits for all dynamic techniques that need heap information, significantly reducing their overhead.