1 research outputs found

    The Intelligent C Language Debugger

    No full text
    Most current programming debuggers do not have any built-in intelligence to help programmers perform debugging. When using these non-intelligent debuggers, programmers have to debug their programs statement by statement in order to track down the bugs. There are several disadvantages with the current non-intelligent debuggers. The first disadvantage is that the debugger does not know the variable dependencies of the program being debugged. It does not understand the cause-effect semantics of the program, and how a single error in one line of code can lead to a propagation of errors in later lines of code. The second disadvantage is that the debugger cannot simplify the program being debugged. If programmers are only concerned with some particular variables when debugging the code, the debugger should have the ability to filter out the statements that have no relevancy (i.e., no dependency) with those variables. The third disadvantage is that the debugger cannot help identify the statements which would have a higher probability of causing certain program errors. If the debugger allowed programmers to provide some information regarding what is wrong (and what is right) with the program, it should be able to utilize that information and help programmers narrow down the bugs. This paper proposes an intelligent debugger which can help programmers to narrow down the bugs in a program. Using test result information provided to it, the intelligent debugger applies an enhanced static slicing algorithm to display a subset of the program containing only the statements that have a variable dependency related to the error condition(s). After slicing, the resulting program becomes more readable and understandable to the user, aiding the debugging process. Also, a variable analyzer is able to compute correctness ratio numbers to assist the user in identifying relatively weak areas of code which have the highest probability of causing certain program errors. Users can then focus on and double check those areas of code to determine if any of them are indeed causing the bugs in the program
    corecore