Skip to main content

Debugging Programs


Introduction:
Welcome, this page will talk about Debugging a program.

When is debugging needed?
Whenever a program is not running correctly, freezing, hanging, crashing, giving errors or behaving unexpectedly, it needs to be debugged. Debugging in Java is the process of removing bugs from a script.

How to debug:
For the purposes of this example, I am going to create a very simple "mistake" of accidentally setting an If statement conditions to the opposite of what they should be.

The first thing we need to do is check where the program is actually giving the errors at, to do this, we are going to add a System.out.println line every couple of lines to the script where we think it might be crashing each with a slightly different output string. Like so;

(Before Adding Output Lines {Problem Code}:):

  1. boolean debug = false;
  2. if (!debug) {
  3. debug = !debug;
  4. debug = !debug;
  5. debug = !debug;
  6. debug = !debug;
  7. debug = !debug;
  8. if (debug) {
  9. System.out.println("YAY");
  10. }else{
  11. System.out.println("Nope");
  12. }
  13. }

Here is the script after adding the output debugging lines:

  1. boolean debug = false;
  2. System.out.println("Debug 0");
  3. if (!debug) {
  4. System.out.println("Debug 1");
  5. debug = !debug;
  6. System.out.println("Debug 2");
  7. debug = !debug;
  8. System.out.println("Debug 3");
  9. debug = !debug;
  10. System.out.println("Debug 4");
  11. debug = !debug;
  12. System.out.println("Debug 5");
  13. debug = !debug;
  14. System.out.println("Debug 6");
  15. if (debug) {
  16. System.out.println("YAY");
  17. }else{
  18. System.out.println("Nope");
  19. }
  20. }

Debug 0
Debug 1
Debug 2
Debug 3
Debug 4
Debug 5
Debug 6
YAY

Now, let's say the problem is that we wanted it to output "Nope" at the end instead of "YAY". We can now analyse that output we got to see that all the code is working ok (because if the program crashed, some outputs would not get output so we could see where it stopped). So we can see all of the outputs except the ending "Nope", so we know everything is working except we have the wrong conditions for our ending if statement, lets change that now. Here is our fixed code:

  1. boolean debug = false;
  2. if (!debug) {
  3. debug = !debug;
  4. debug = !debug;
  5. debug = !debug;
  6. debug = !debug;
  7. debug = !debug;
  8. if (!debug) {
  9. System.out.println("YAY");
  10. }else{
  11. System.out.println("Nope");
  12. }
  13. }

Nope

Finished!

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Comments

Add new comment

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.