# Übung Debugging ### Aufgabenstellung Klonen Sie das Projekt https://gogs.informatik.hs-fulda.de/Programmiermethoden_und_werkzeuge-public/UebungDebugging.git und führen Sie die Übung entsprechend den Anweisungen in der README.md-Datei aus. ## Übung 1 **Starten Sie das Programm mehrfach und geben Sie verschiedene natürliche Zahlen ein.**\ Eingabe: 45 ``` input: 45, Schleifenvariable: 2, Ergebnis 1 input: 45, Schleifenvariable: 3, Ergebnis 0 number 45 passed check: false ``` Sowohl die eingegebene Zahl, als auch die Schleifenvariable und ein ganzzahliges Ergebnis werden ausgegeben. **Notieren Sie die Inhalte der Variablen, nach Starten des Programms im Debug-Modus und Setzen eines Breakpoints in Zeile 35.**\ Eingabe: 45 ``` int i = 2; int nextInt = 45; this //Instanz des Programms out //PrintStream Objekt ``` **Lassen Sie das Programm bis zum nächsten Halt weiterlaufen und notieren Sie die Inhalte der Variablen.** ``` int i = 3; int nextInt = 45; this //Instanz des Programms out //PrintStream Objekt ``` **Notieren Sie die Inhalte der Variablen, nach Starten des Programms im Debug-Modus und Eingabe der Zahl 47.** ``` int i = 2; int nextInt = 47; this //Instanz des Programms out //PrintStream Objekt ``` **Lassen Sie das Programm bis zum nächsten Halt weiterlaufen und notieren Sie die Inhalte der Variablen.** ``` int i = 3; int nextInt = 47; this //Instanz des Programms out //PrintStream Objekt ``` **Lassen Sie das Programm erneut bis zum nächsten Halt weiterlaufen und notieren Sie die Inhalte der Variablen.** ``` int i = 4; int nextInt = 47; this //Instanz des Programms out //PrintStream Objekt ``` Die Variable "nextInt" zeigt stehts die eingegebene Zahl an. Die Variable "i" wird als Schleifenvariable verwendet, um die Zahlen von 2 bis zum eingegebenen Wert zu durchlaufen und den Rest der Division zu berechnen. Sie überprüft, ob die eingegebene Zahl durch eine andere Zahl ohne Rest teilbar ist.\ Beim Starten in Debug-Modus läuft das Programm bis zum Breakpoint, durchläuft die Schleife ein Mal und gibt die Variablen aus. Deswegen ändert sich der Wert der Variable "i" immer wieder, wenn man das Programm bis zum nächsten Halt (der nächste Schleife) weiterlaufen lässt. ## Übung 2 **Starten Sie das Programm, nach Setzen eines Breakpoints in Zeile 40, im Debug-Modus und geben Sie die Zahl 45 ein. Notieren Sie den Inhalt der Variablen.** ``` int nextInt = 23; this //Instanz des Programms int count = 3; ``` In der Debug View waren insgesammt 9 Einträge: ``` Thread[main] Uebung2.checkNumber(int) Uebung2.run() Uebung2.main(String[]) Thread[Reference Handler] Thread[Finalizer] Thread[Signal Dispatcher] Thread[Notification Thread] Thread[Common-Cleaner] ``` Bei der Verwendung von "step over" ist der Debugger durch die Rekursive Methode wieder in Zeile 40.\ Die Anzahl der Einträge in Debug View waren insgesammt 10: ``` Thread[main] Uebung2.checkNumber(int) Uebung2.checkNumber(int) Uebund2.main(String[]) Thread[Reference Handler] Thread[Finalizer] Thread[Signal Dispatcher] Thread[Notification Thread] Thread[Common-Cleaner] ``` Bei der erneuten Verwendung von "step over" ist der Debugger nun in Zeile 23.\ Die Anzahl der Einträge in Debug View sind nun 8: ``` Thread[main] Uebung2.run() Uebung2.main(String[]) Thread[Reference Handler] Thread[Finalizer] Thread[Signal Dispatcher] Thread[Notification Thread] Thread[Common-Cleaner] ```