Schrittweises Debuggen mit Xcode geht nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schrittweises Debuggen mit Xcode geht nicht

    Hallo,

    mein Problem klingt wohl relativ banal, hindert mich aber leider komplett an der Nutzung von Xcode.

    Und zwar habe ich gerade ein Studium begonnen wo wir zunächst mal programmieren mit C lernen. Ich habe schon ein wenig Programmiererfahrung, habe aber erst vor kurzem komplett zu Mac gewechselt.
    Wo ich früher Visual Studio benutzt habe, benutze ich jetzt Xcode.

    Allerdings begreife ich nicht wie dieser Debugger funktioniert. Ich möchte einfach wie in VS schrittweise durch die Codezeilen steppen und anschauen was mit meinen Variablen geschieht.
    Bei XCode ist diese Option erstmal grundsätzlich ausgegraut. Dann habe ich versucht Breaks zu setzen, diese werden vom Debugger aber einfach ignoriert und er rennt mir durch den gesamten Code.
    Wenn ichs dann mal schaffe in eine Zeile reinzuschauen, geht er mir direkt in die tiefsten Tiefen des Systems und präsentiert mir Werte die mich gar nicht interessieren.

    Gibt es gar keine Möglichkeit, einfach ganz friedlich Codezeile für Codezeile ablaufen und zu lassen und zu betrachten?
  • Ja soweit war ich bereits,
    allerdings ignoriert mein Debugger die Breakpoints.

    z.B. hatte ich eine Stelle an der mehrere Variablen eingelesen werden sollen, dann wird eine Funktion aufgerufen die diese weiterverarbeitet.
    Danach kommt eine Funktion die das Ergebnis ausgibt.

    Jetzt wollte ich eben gern einmal vor den Funktionsaufrufen stoppen und dann schrittweise über die beiden Funktionen steppen und schauen wo ich einen Fehler hab.
    Der erste Breakpoint sitzt direkt vor der Funktion.
    Der Debugger geht aber kompromisslos in die Funktion und lässt das Programm einfach laufen (ist mir aufgefallen weil in der Console bereits die Ausgabe gab).

    Wenn ich dann Schrittweise durchgehe, lande ich irgendwo in den tiefen einer der printf oder scanf-Funktionen, was ich natürlich nicht will.

    Und genau da liegt mein Problem...der Debugger verhält sich absolut willkürlich. Ich dachte es ginge so einfach wie in VS dass ich gemütlich durch die Zeilen steppen kann.
    Da ich aber später gern für Mac entwickeln will, bringt es mir natürlich jetzt auch nichts, irgendwie VS über Parallels oder so laufen zu lassen..
  • Ich verstehe Dich nicht ganz. Ich finde auch, dass sich da Xcode und VS nicht viel nehmen, obwohl ich VS auch um einiges besser finde, als Xcode, aber egal..

    Hält der Debugger jetzt bei irgend einem Breakpoint? Bist Du sicher, dass die Breakpoints korrekt gesetzt sind? Muss so ein dunkler blauer Pfeil sein, wie in dem Screenshot. Hell-blau sind nicht-aktive Breakpoints.

    Es gibt, wie bei VS auch, zwei Knöpfe: Einer, um genau einen Schritt weiter zu gehen (womit man in den tiefen von prinft landen kann) und einen, um Funktionsaufrufe zu überspringen. Welche drückst Du denn?
    C++
  • Ja ich kanns schwer beschreiben...weil bei mir Fehler sind die irgendwie nicht existieren können.

    Also ich hab jetzt ein kleines einfaches Testprogramm gebaut um den Fehler vielleicht demonstrieren zu können.

    int zahl;

    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", zahl);

    funktionAusgabe(zahl);


    nehmen wir an ich setze meinen Breakpoint direkt am Anfang unter "int zahl" weil ich einfach das ganze Programm durchsteppen will, rennt mir der Debugger erstmal bis ins scanf(). Dann müsst ich ja einen Wert eingeben, was ich aber auch nicht kann irgendwie...
    jedenfalls sind jetzt die Schaltflächen sichtbar, ich will also über scanf() steppen (Was in Scanf passiert ist mir ja weitgehend egal).
    Jetzt rennt der Debugger sofort ans Ende des Programms und fertig.
    Wenn ich in scanf() reingehe, bin ich eben in scanf()...aber das will ich ja nicht.

    Bei den Threads werden btw. neben main() noch zig andere System-Threads angezeigt...ist das sinnvoll?

    Ich versteh selbst nicht wieso der Debugger nicht einfach seine Arbeit tut und Zeile für Zeile durch mein programm geht.
    Kann ich nicht von Anfang an steppen? Also einfach ab dem main() Aufruf, ohne Breakpoints (die ja eh ignoriert werden)

    Danke für die Hilfe schonmal!
    Ich weiß das ist ein wenig diffus und schwer zu verstehen...ich weiß auch nicht genau wie ichs beschreiben soll weil mir sowas noch nie passiert ist
  • Normalerweise funktioniert das. Sind vielleicht die Breakpoints abgeschaltet?

    kozuma schrieb:

    Ja ich kanns schwer beschreiben...weil bei mir Fehler sind die irgendwie nicht existieren können.

    Also ich hab jetzt ein kleines einfaches Testprogramm gebaut um den Fehler vielleicht demonstrieren zu können.

    int zahl;

    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", zahl);

    Hier fehlt Dir übrigens der Adressoperator.
    * Kann Spuren von Erdnüssen enthalten.