The methods used by professional debuggers of large systems have received little study, although computer manufacturers and users rely heavily on this group. This research investigates the reasoning professional debuggers use in asking questions and collecting information when attempting to solve a problem in a large system Specifically, this thesis describes the professional debugger's use of a goal driven strategy. The questions asked are (1) are goals used in debugging? (2) what are the goals used? (3) is there a relationship among goals? and (4) does conscious knowledge of the goals alter the debugger's behavior? A preliminary study determined that goals are used, and that they are beneficial in categorizing the information available about an error situation. This study also derived a set of sixteen goals. Experiments investigated goal usage in both the initial stages of debugging and in the complete problem solving process. These experiments verified that goals are used. Furthermore, the goals are frequently used in specific pairings. The use of goals is not an artifact of the experiments described in this study, however this study does demonstrate that conscious knowledge of the goals does alter the frequency with which specific goals are used This research finds evidence of a top-down approach to debugging, in which the debugger attempts to use a general, high level knowledge of the system to solve the problem. Also studied are key words and concepts, and what causes a particular goal to be used. This investigation finds that professional debuggers rely on a goal driven, top down strategy when solving problems