Embedded Debugging of C/C++ Plugins and Extension Modules

Jing Cao; David M. Beazley. 1 June, 2005.
Communicated by David Beazley.


Today, C and C++ are frequently used to write programs that operate as dynamic link libraries, plugins, and extensions of large application frameworks and high level programming languages. An unfortunate side-effect of this programming style is that it makes debugging considerably more difficult. Traditional debuggers don't work as well with extension modules because of the complexity of execution environment. Moreover, the information they provide may be incomplete. To address this limitation, we have been exploring an alternative approach to debugging plugin modules in which a small C/C++ debugger is embedded into the application framework itself. This embedded debugger requires no modifications to the application or plugin modules. Moreover, it is able to catch many common C/C++ programming errors---turning those errors into useful diagnostic error messages. We originally developed this approach for debugging scripting language extension modules, but the approach has since proven to be more widely applicable. In this paper, we describe the embedded debugging approach, and how it can be applied to complicated applications involving plugins, scripting languages, and multiple programming languages. We provide examples of using an embedded debugger with a variety of applications including Python, PHP, and Java, as well as with the popular Apache websever.

Original Document

The original document is available in PDF (uploaded 1 June, 2005 by David Beazley).