KEDR 0.2 Reference Manual

Eugene Shatokhin

Andrey Tsyvarev

KEDR Framework version 0.2 (March 2, 2011)


Table of Contents

1. Introduction
2. Overview
2.1. General
2.2. Types of Analysis KEDR Supports
2.3. System Requirements
2.4. Common Use Case
2.5. Key Technologies KEDR Relies Upon
2.6. Limitations
3. Getting Started
3.1. Installation
3.2. A Simple Example
3.3. Call Monitoring (Call Tracing)
3.4. Fault Simulation
3.5. Detecting Memory Leaks
4. Using KEDR
4.1. Controlling KEDR
4.1.1. General
4.1.2. Usage
4.1.3. Options
4.1.4. Description
4.1.5. Caveats
4.1.6. Configuration file
4.1.7. Examples
4.2. Capturing the Trace
4.2.1. General
4.2.2. Usage
4.2.3. Description
4.2.4. Options
4.2.5. Examples
4.3. How KEDR Works
4.4. Call Monitoring (Call Tracing)
4.5. Fault Simulation
4.6. Detecting Memory Leaks
4.6.1. Typical Usage
4.6.2. Reports
4.6.3. Analyzing the Results
4.6.4. Stack Depth
4.6.5. Caveats
4.7. Analyzing the Trace
4.7.1. General
4.7.2. Locating the Calls in the Sources with GDB
4.7.3. Locating the Calls in the Sources with Objdump
4.7.4. Obtaining the Call Stack
5. Customizing and Extending KEDR
5.1. Using Code Generator to Create Custom Modules
5.2. Writing Custom Payloads for Call Monitoring
5.3. Writing Custom Payloads for Fault Simulation
5.4. trace.happensBefore Parameter for Call Monitoring and Fault Simulation Payloads
5.5. Writing Custom Scenarios for Fault Simulation
5.6. Implementing Custom Types of Analysis
5.6.1. Choosing the Counters and the Functions to Process
5.6.2. Creating the Payload Module
5.6.3. Building the Payload Module
5.6.4. Using the Payload Module
6. KEDR Reference
6.1. API for Payload Modules
6.1.1. Header file
6.1.2. struct kedr_repl_table
6.1.3. struct kedr_payload
6.1.4. kedr_payload_register()
6.1.5. kedr_payload_unregister()
6.1.6. kedr_target_module_in_init()
6.1.7. A Stub of a Payload Module
Glossary