The provision of debugging facilities for high level languages : a thesis presented in partial fulfilment of the requirements for the degree of Master of Science in Computer Science at Massey University

Thumbnail Image
Open Access Location
Journal Title
Journal ISSN
Volume Title
Massey University
The Author
In this thesis computer programming and programming systems are studied, with a view to reducing the time required to debug programs written in high level programming languages. A general approach to the detection, location and correction of bugs is developed; and the provision of debugging facilities for high level languages is discussed with respect to three major issues : - What information does the programmer need to help him debug his programs ? - How should this information be presented to him ? - How can this information be made available ? Firstly, the programming process is analysed, and the various types of program errors are identified. Ways in which these errors can be avoided, and treatment of those errors which can be detected by the computer are discussed. Special attention is then paid to those errors known as 'bugs', which cannot normally be detected by the computer. A variety of debugging tools, for use in both batch-processing and interactive environments, is discussed, with emphasis on the information they provide and how they can be controlled. Techniques for using these tools are developed. Examination of existing debugging facilities shows that four different methods of implementation are commonly used. These methods are described, and examples given of how they have been used in existing systems. Advantages and disadvantages of each method are discussed, and some improvements suggested for each. Finally, the application of one of these methods in providing debugging facilities for a particular language is described in detail. The design of the debugging facilities and their implementation are developed in a way which could easily be adapted to other programming languages.
Debugging in computer science