Debugging
99
Citation
9
Reference
10
Related Paper
Citation Trend
Abstract:
A qualitative analysis of debugging strategies of novice Java programmers is presented. The study involved 21 CS2 students from seven universities in the U.S. and U.K. Subjects "warmed up" by coding a solution to a typical introductory problem. This was followed by an exercise debugging a syntactically correct version with logic errors. Many novices found and fixed bugs using strategies such as tracing, commenting out code, diagnostic print statements and methodical testing. Some competently used online resources and debuggers. Students also used pattern matching to detect errors in code that "just didn't look right". However, some used few strategies, applied them ineffectively, or engaged in other unproductive behaviors. This led to poor performance, frustration for some, and occasionally the introduction of new bugs. Pedagogical implications and suggestions for future research are discussed.Keywords:
Tracing
Code (set theory)
A techinque for tracing and replaying message-passing programs for debugging is presented. The technique is optimal in the common case and has good performance in the worst case. By making runtime tracing decisions, only a fraction of the total number of messages is traced, gaining two orders of magnitude reduction over traditional techniques which trace every message. Experiments indicate that only 1% of the messages often need to be traced. These traces are sufficient to provide replay, allowing an execution to be reproduced any number of times for debugging. This work is novel in that runtime decisions are used to detect and trace only those messages that introduce nondeterminacy. With the proposed strategy, large reductions in trace size allow long-running programs to be replayed that were previously unmanageable. In addition, the reduced tracing experiments alleviate tracing bottlenecks, allowing executions to be debugged with substantially lower execution-time overhead.< >
Tracing
TRACE (psycholinguistics)
Fraction (chemistry)
Cite
Citations (52)
Algorithmic program debugging
Cite
Citations (1)
Tracing
TRACE (psycholinguistics)
Cite
Citations (43)
We are developing a debugging support system called DESUS which guides tracing for beginners of programming. The tracing is one of tactical plans for programming, and it is an important skill for beginners as well as experts, because tracing make learners to understand the behavior of their programs. We collected learner's programs every time they were compiled during debugging by using DESUS in actual classes, and analyzed the data of how learners use and study tracing and other three kinds of tactical plans. As a result, we found that learners cannot use tracing without DESUS's support, while they can use other tactical plans without support. We also discuss effects of the system on learning tracing.
Tracing
Algorithmic program debugging
Cite
Citations (0)
This chapter presents an overview of the issues affecting and the tools used for the debugging of rule bases. It describes the challenges in debugging rules, presents a classification of the debugging methods developed in academia and the tools currently used in practice. This chapter explains the main debugging paradigms for rule based systems: Procedural Debugging, Explanations, Why-Not Explanations, Algorithmic Debugging, Explorative Debugging, Automatic Theory Revision and Automatic Knowledge Refinement.
Algorithmic program debugging
Cite
Citations (6)
A techinque for tracing and replaying message-passing programs for debugging is presented. The technique is optimal in the common case and has good performance in the worst case. By making runtime tracing decisions, only a fraction of the total number of messages is traced, gaining two orders of magnitude reduction over traditional techniques which trace every message. Experiments indicate that only 1% of the messages often need to be traced. These traces are sufficient to provide replay, allowing an execution to be reproduced any number of times for debugging. This work is novel in that runtime decisions are used to detect and trace only those messages that introduce nondeterminacy. With the proposed strategy, large reductions in trace size allow long-running programs to be replayed that were previously unmanageable. In addition, the reduced tracing experiments alleviate tracing bottlenecks, allowing executions to be debugged with substantially lower execution-time overhead. >
Tracing
TRACE (psycholinguistics)
Fraction (chemistry)
Cite
Citations (122)
Debugging is a distinct subject in programming that is both comprehensive and challenging for novice programmers. However, instructors have limited opportunities to gain insights into the difficulties students encountered in isolated debugging processes. While qualitative studies have identified debugging strategies that novice programmers use and how they relate to theoretical debugging frameworks, limited larger scale quantitative analyses have been conducted to investigate how students' debugging behaviors observed in log data align with the identified strategies and how they relate to successful debugging. In this study, we used submission log data to understand how the existing debugging strategies are employed by students in an introductory CS course when solving homework problems. We identified strategies from existing debugging literature that can be observed with trace data and extracted features to reveal how efficient debugging is associated with debugging strategy usage. Our findings both align with and contradict past assumptions from previous studies by suggesting that minor code edition can be a beneficial strategy and that width and depth aggregations of the same debugging behavior can reveal opposite effects on debugging efficiency.
Algorithmic program debugging
TRACE (psycholinguistics)
Cite
Citations (3)
Tracing
Cite
Citations (53)
In 1997, Henry Lieberman stated that debugging is the dirty little secret of computer science. Since then, several promising debugging technologies have been developed such as back-in-time debuggers and automatic fault localization methods. However, the last study about the state-of-the-art in debugging is still more than 15 years old and so it is not clear whether these new approaches have been applied in practice or not. For that reason, we investigate the current state of debugging in a new comprehensive study. First, we review the available literature and learn about current approaches and study results. Second, we observe several professional developers while debugging and interview them about their experiences. Based on these results, we create a questionnaire that should serve as the basis for a large-scale online debugging survey later on. With these results, we expect new insights into debugging practice that help to suggest new directions for future research.
Algorithmic program debugging
Software bug
Cite
Citations (15)