1 / 13

IAT 800

IAT 800. Debugging. How do I know my program is broken?. Compiler Errors easy to fix! Runtime Exceptions more difficult to fix, but at least you're using java and you get these Your program just doesn't do the right thing. Compiler Errors. Errors dealing with language syntax,

Download Presentation

IAT 800

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IAT 800 Debugging IAT 800

  2. How do I know my program is broken? • Compiler Errors • easy to fix! • Runtime Exceptions • more difficult to fix, but at least you're using java and you get these • Your program just doesn't do the right thing. IAT 800

  3. Compiler Errors • Errors dealing with language syntax, • Simple logical errors, • Whatever the compiler can possibly catch. • Generally, the line number stated has the error on it. • Sometimes the fix is elsewhere IAT 800

  4. How to fix compiler errors? • Start at the top of the error list • Some errors cause others • Wrong variable declaration causes errors in usage of that variable • Use the line number! • If that line looks OK, check the line above • maybe missed a brace/semicolon or other necessary syntax element. IAT 800

  5. Compile Time Errors • Some errors aren't necessarily errors. • For example:String foo; //assume we initialize this somewhere elsepublic void blah(){ Object bar; try{ bar = foo.toString(); } catch(Exception e){ println(“Oh no!!”); return; } println(bar.toString()); //lets call this line 101} • Will give you something like:line 101: variable bar might not be initialized! (or something like that) IAT 800

  6. Runtime Exceptions • There are two types of Runtime Exceptions • Checked and Unchecked • Checked exceptions: • Java makes you deal with these in your code • Things that you would expect to fail: I/O mainly • Unchecked exceptions • Java does not require you to catch these IAT 800

  7. Checked Exceptions • IOException (FileNotFoundException) • Input and output is typically hare to write because you have to deal with the real world’s complexities • Java requires that you put these in Try/Catch Blocks • Processing manages some of this IAT 800

  8. Unchecked Exceptions • Exceptions that only the programmer can anticipate • Extremely hard for a compiler to determine • NullPointerException (NPE) and ArrayIndexOutOfBoundsException (AIOBE) • Caused by semantic errors • uninitialized variable, bad loop logic… IAT 800

  9. Exceptions • On exception, you get a stack trace • Find the first line of the stack trace that occurs in your program. • That line is where the exception occurred, not necessarily where the fix is. • On that line, did you get an NPE? • Is there some object that you're calling a method on? Is that object Null? • For AIOBE, check index values IAT 800

  10. print your variables • System.out.println() (or println() in Processing) • Use println often • Print everything: array values, pointer values, array index, objects etc • Each println should label itself with class name and line number • Be sure to use System.out.flush(); to ensure you are getting all data IAT 800

  11. Learn to read your code • Keep a notepad around to keep track of variable values. • Use comments to document complex code • Keep one step to one line. • Format your code! Indentations help readability IAT 800

  12. Things to remember • In java Objects are passed by reference and primitives are passed by value. public void doStuff(String a) { a = a + “bar”; } public void doMoreStuff(int a) { a = a+5; } public static void main(...){ String temp = “foo”; int temp2 = 5; doStuff(temp); doMoreStuff(temp2); System.out.println (temp); System.out.println (temp2);}prints out: foobar 5 IAT 800

  13. The #1 debugging tip • TEST YOUR CODE OFTEN! • Catching your small errors early will help you avoid the big complicated errors later. • If you write a chunk of code that you can test, test it. • You'll regret not spending 5 minutes writing a simple test case when you spend hours trying to find out it has a bug later. IAT 800

More Related