2001
DOI: 10.1007/3-540-45314-8_16
|View full text |Cite
|
Sign up to set email alerts
|

Debugging via Run-Time Type Checking

Abstract: This paper describes the design and implementation of a tool for C programs that provides run-time checks based on type information. The tool instruments a program to monitor the type stored in each memory location. Whenever a value is written into a location, the location's run-time type tag is updated to match the type of the value. Also, the location's static type is compared with the value's type; if there is a mismatch, a warning message is issued. Whenever the value in a location is used, its run-time ty… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

1
50
0

Year Published

2003
2003
2006
2006

Publication Types

Select...
6

Relationship

0
6

Authors

Journals

citations
Cited by 43 publications
(51 citation statements)
references
References 12 publications
1
50
0
Order By: Relevance
“…Loginov et al [7] present a run-time type checker that uses a shadow memory similar to ours. However, they use source-to-source translation to embed the checking and maintenance code into the target.…”
Section: Patil and Fishermentioning
confidence: 99%
See 1 more Smart Citation
“…Loginov et al [7] present a run-time type checker that uses a shadow memory similar to ours. However, they use source-to-source translation to embed the checking and maintenance code into the target.…”
Section: Patil and Fishermentioning
confidence: 99%
“…Loginov et al present a system similar to ours that employs source-to-source translation to insert code to maintain and check shadow memory [7]. Relying on source code translation limits their handling of libraries and mixed-language programs, and their tool does not preserve the instruction stream of the original program.…”
Section: Introductionmentioning
confidence: 99%
“…Semantics. We define the operational semantics of the language using a store and a memory in the standard way but additionally taking into account the runtime type information [15]. We assume a store Σ mapping variables to values, a partial mapping memory M from addresses to values, and a partial mapping runtime type information (RTTI) W from variables and addresses to types.…”
Section: Syntax and Semanticsmentioning
confidence: 99%
“…Here either our generated invariant was too weak, the predicate guard used variables that were not allowed, or there was a bug. For the cases where our invariants are too weak, more precise invariant generators (e.g., Blast [10]) can be used to statically verify that the edge predicates hold at the cast points, or alternatively, dynamic checking can be inserted to ensure typesafety at runtime [18,7,15]. One bug is when the programmer forget to check the predicate before the access, leaving the possibility of an unsafe access.…”
Section: Implementation and Experiencesmentioning
confidence: 99%
See 1 more Smart Citation