Finding and Debugging Errors
E N D
Presentation Transcript
Categories of Errors • Syntaxerrors are detected at compile time • Use the Error List window to find these errors • The debugging tools cannot help with syntax errors • Runtimeerrors occur as an application executes • Logicerrors cause an application to produce unexpected results but do not cause exceptions
Types of Runtime Errors • File processing errors • Arithmetic errors • Null reference errors • And many more
File Processing Errors • Sequential files with extra trailing carriage returns will generate errors • Sequential files with extra or missing fields will also cause errors • Omitting the carriage return on the last record may cause the last record to be ignored
Arithmetic Errors (1) • Numeric overflow results in the following exception: • Correct by performing double precision arithmetic instead of integer arithmetic
Arithmetic Errors (2) • Trying to convert an invalid value to a number will result in a System.FormatException • Call TryParse() to test before conversion
Arithmetic Errors (3) • Integer division by zero throws a System.DivideByZeroException: • Fix by testing the dividend value
Arithmetic Errors (4) • Division by zero is handled differently for floating point numbers and floating point division • Division by zero results in the value Infinity • Test using Double.IsInfinity(Value)
Null Reference Errors (Introduction) • Pure and simple, you reference an object with first creating an instance of that object • The following exception is thrown
Interrogating the Value of a Variable or Property • Do while the application is in break mode • In the Code Editor, highlight the variable, object, or property • Expand or collapse complex objects as necessary
Setting Breakpoints (1) • Use to temporarily suspend execution while a program runs • Multiple breakpoints may be set • Breakpoints may be enabled or disabled • It’s possible to clear all breakpoints • Breakpoints are persistent between invocations of Visual Studio
Setting Breakpoints (2) • Set simple breakpoints on a line by clicking in the left margin in the Code Editor • A maroon circle appears in the left margin • Breakpoints may be set only on executable statements because declaration statements don’t execute!
Setting Breakpoints (3) • Breakpoints appear in the Breakpoints window
Setting Conditional Breakpoints • Break when a condition becomes true or a value changes • Use for problems having long iteration counts
Setting Hit Count Breakpoints • Break on an iteration count • Hit count breakpoints are configurable Break after 999 iterations
Setting Conditional Breakpoints • Conditional breakpoints are hit when • The value of a Boolean condition is True • The value of a condition has changed
Setting Conditional Breakpoints (Illustration) • Set a conditional breakpoint
Setting WatchPoints • There are multiple Watch windows • Each works the same way • Just create an expression to be watched • Use Watchpoints instead of repeatedly typing the same expression in the Immediate window • Beware of setting too many Watchpoints – Execution will become quite slow
Setting WatchPoints (Illustration) • Watch the variable “f”
Other Debugging Windows (1) • The Autos window shows variables used in the current and previous statement
Other Debugging Windows (2) • The Locals window displays variables local to the current context
Other Debugging Windows (3) • Call stack shows the procedures and the order in which the procedures were called
Exceptions • Use to change the handling of exceptions when they occur