Warum funktionieren meine Haltepunkte nicht?

112

Ich habe Haltepunkte gesetzt, aber Xcode scheint sie zu ignorieren.

AlanKley
quelle
2
ProduktSauber hat mir geholfen
Alexander Bekert
Ich musste einen vollständigen Neustart mit meinem Computer durchführen, damit sie wieder funktionieren, und jetzt sind sie super fehlerhaft. Ich benutze xcode 10.2.1.
Lamacorn
2
Xcode 11, Neustart und Bereinigung des Xcodes, der nicht funktioniert, Neustart des Mac funktioniert nicht. Löschen Sie die App auf dem Gerät und die Neuerstellung behebt dieses Problem. Hoffe das hilft jemandem
Randall Wang

Antworten:

148

Erstens stimme ich zu 100% den früheren Leuten zu, die sagten, ausschalten Load Symbols Lazily .

Ich muss noch zwei Dinge hinzufügen.

(Mein erster Vorschlag klingt offensichtlich, aber als mich jemand zum ersten Mal vorschlug, ging meine Reaktion folgendermaßen vor: "Komm schon, bitte, du denkst wirklich, ich würde es nicht besser wissen ... oh.")

  1. Stellen Sie sicher, dass Sie "Active Build Configuration" nicht versehentlich auf "Release" gesetzt haben.

  2. Klicken Sie unter "Ziele" in der grafischen Baumanzeige Ihres Projekts mit der rechten Maustaste auf Ihr Ziel und führen Sie "Informationen" aus. Suchen Sie nach einer Eigenschaft mit dem Namen "Debug-Symbole generieren" (oder ähnlichem) und stellen Sie sicher, dass diese überprüft ist (auch bekannt als ON). Sie können auch versuchen, (auch in Target >> Get Info) eine Eigenschaft namens "Debug Information Format" zu finden und auf "Dwarf with dsym file" zu setzen.

Unter Ziel >> Informationen abrufen gibt es eine Reihe weiterer Eigenschaften, die sich auf Sie auswirken können. Suchen Sie nach Dingen wie dem Optimieren oder Komprimieren von Code und schalten Sie diese aus (ich gehe davon aus, dass Sie in einem Debug-Modus arbeiten, damit dies kein schlechter Rat ist). Suchen Sie auch nach Dingen wie dem Entfernen von Symbolen und stellen Sie sicher, dass diese ebenfalls ausgeschaltet ist. Beispielsweise sollte "Strip Linked Product" für das Debug-Ziel auf "No" gesetzt werden.

pestophag
quelle
8
Auf XCode 4.5.2 hatte ich dieses Problem und es stellte sich heraus, dass ich "Link-Time-Optimierung" aktiviert hatte, also ist das eine andere Sache zu überprüfen
Taxilian
6
Um die Build-Konfiguration zu ändern, gehen Sie unter Ausführen - Info zu Produkt -> Schema -> Schema bearbeiten. Für mich funktionierte die Überprüfung von "Debug Executable" in diesem Menü.
Jeffrey Sun
2
Die Entführung der Top-Antwort, um hinzuzufügen, dass die Bison-Syntax eine weitere (exotische) Ursache dafür zu sein scheint, dass Haltepunkte nicht funktionieren (siehe meine Antwort unten). Hoffentlich sparen Sie der nächsten Person mit diesem Problem etwas Zeit.
Dave
2
Es ist auch super einfach, die Aktivierung des Haltepunkts versehentlich mit ⌘Y umzuschalten. Also pass auf, Kinder.
dsgrnt
1
Ich habe Punkt 1 ausprobiert und es hat bei mir funktioniert. Hat mir wirklich geholfen. Upvoted.
NSPratik
48

In Xcode 7 funktionierte für mich Folgendes:

1) Stellen Sie sicher, dass sich das Ziel -> Schema -> Ausführen - im Debug-Modus befindet (war Release).

2) Stellen Sie sicher, dass die Option "Debug ausführbare Datei" aktiviert ist (siehe unten):

Geben Sie hier die Bildbeschreibung ein

Oded Regev
quelle
4
Genau das ist mir passiert, das Kontrollkästchen wurde
deaktiviert
Gleiches Problem für mich. Sollte diese Option nicht standardmäßig aktiviert sein (XCode 8.3)? Sollen wir nicht alle Entwickler sein, die sowieso bereit sind zu debuggen?
dgmz
Arbeitete für mich in Xcode 9.3, es wäre toll, wenn Sie ein anderes Bild für Option 1 bereitstellen.
Kazi Abdullah Al Mamun
24

Gehen Sie zu den Xcode-Debugging-Einstellungen. Stellen Sie sicher, dass "Symbole träge laden" NICHT ausgewählt ist.

AlanKley
quelle
7
Leider gibt es in Xcode 6 keine "Debugging" -Einstellungen und "träge" erscheint nicht in der Dokumentation. Seufzer.
Oscar
1
Okay, jetzt kann ich die Option 'Symbole faul laden' in XCode 6
RNA
14

Ich hatte gerade das gleiche Problem (wieder). Nachdem ich dreimal "Symbole träge laden" überprüft und die Flags zur Generierung von Info-Strippings entfernt und debuggt hatte, habe ich Folgendes getan:

  1. Beenden Sie Xcode
  2. Öffnen Sie ein Terminalfenster und wechseln Sie in das Projektverzeichnis
  3. CD in das Verzeichnis .xcodeproj
  4. lösche alles außer der .pbxproj-Datei (ich hatte frank.mode1v3 und frank.pbxuser)

Sie können dieselbe Aufgabe im Finder ausführen, indem Sie mit der rechten Maustaste / Option auf das .xcodeproj-Bundle klicken und "Paketinhalt anzeigen" auswählen.

Als ich Xcode neu startete, wurden alle meine Fenster auf Standardpositionen usw. zurückgesetzt, aber Haltepunkte funktionierten!

Frank Szczerba
quelle
2
Dies funktioniert, löscht jedoch alle Ihre Einstellungen ... Dies sollte erfolgen, wenn nichts anderes funktioniert hat.
Rémi Doolaeghe
hat für mich gearbeitet, danke. Ich frage mich, warum Xcode so viel saugt. Xcode ist die schlechteste Software, die jemals von Apple geschrieben wurde.
Ente
Wow, das ist 5 Jahre alt. Kaum zu glauben, dass es immer noch funktioniert und dass es immer noch ein Problem ist!
Frank Szczerba
Hat bei mir nicht funktioniert. Ich verwende Xcode 6.01. Wenn ich jetzt erstelle, erhalte ich mehrere fehlende Dateifehler. Ich setze meinen Code zurück, um ihn aufzulösen.
Native_Mobile_Arch_Dev
Ich musste nur Xcode neu starten, mein Fall war auf die Git-Versionierung zurückzuführen, als ich die Statusdaten der Xcode-Benutzeroberfläche festschrieb.
Juan Boero
13

Für Xcode 4.x: Gehen Sie zu Produkt> Workflow debuggen und deaktivieren Sie "Disassemblierung beim Debuggen anzeigen".

Für Xcode 5.x Gehen Sie zu Debug> Debug Workflow und deaktivieren Sie "Disassembly beim Debuggen anzeigen".

bneupaane
quelle
11

Ein anderer Grund

In DeploymentPostprocessingBuildSettings auf NO setzen - Details hier

Zusamenfassend -

Wenn Sie diese Einstellung aktivieren, sollten die Binärdateien entfernt und die Informationen zu Dateimodus, Eigentümer und Gruppe auf Standardwerte gesetzt werden. [DEPLOYMENT_POSTPROCESSING]

Geben Sie hier die Bildbeschreibung ein

gbk
quelle
Nach dem Update auf XCode 7 war diese Einstellung irgendwie YESnur in meinem subprojectund dann funktionierten Haltepunkte nicht subprojects. Und nach dem Einstellen NOwar es perfekt!
Maheswaran Ravisankar
Dies hat bei mir erst nach der Reinigung des Projekts funktioniert, sodass ein vollständiger Umbau stattfinden wird.
Ran
8

Siehe diesen Beitrag: Haltepunkte funktionieren nicht in Xcode? . Möglicherweise drücken Sie "Ausführen" anstelle von "Debuggen". In diesem Fall wird Ihr Programm nicht mit Hilfe von gdb ausgeführt. In diesem Fall können Sie nicht erwarten, dass Haltepunkte funktionieren!

Soong
quelle
In Xcode 6.4 gibt es jetzt nur noch eine Schaltfläche Ausführen. Ob eine Debug-Konfiguration ausgeführt wird oder nicht, hängt von den aktuell ausgewählten Schemaeinstellungen ab.
user2067021
6

Eine der möglichen Lösungen hierfür könnte sein: Gehen Sie zu Produkt> Schema> Schema bearbeiten> .. Unter Ausführen> Info> Ausführbare Datei aktivieren Sie "Debug ausführbare Datei".

Soropromo
quelle
Dieser arbeitete für mich, nachdem ich 2 Tage lang meinen Kopf geschlagen hatte.
Dileep Perla
Ich bin froh, dass es geholfen hat.
Soropromo
5

Dies hatte mich für einen halben frustrierenden Tag in Xcode 9. Es war eine einfache Debug-Einstellung.

Gehen Sie zu Debug> Debug Workflow und stellen Sie sicher, dass "Disassembly immer anzeigen" deaktiviert ist. So einfach ist das. :((

Gaz Long
quelle
Das funktioniert bei mir, danke
Md.Harish-Uz-Jaman Mridha Raju
5

Lösung für mich mit XCode 9.4.1 (hat an keinem Haltepunkt angehalten):

Unter Build-Ziel -> Build-Einstellungen -> Optimierungsstufe: Umgeschaltet von "Geschwindigkeit optimieren" -> "Keine Optimierung" (jetzt ist es langsamer, funktioniert aber)

Strinder
quelle
5

Was es in meinem Fall gelöst hat, war ganz einfach: Xcode - Produkt - Clean Build Folder, gefolgt von Product - Run (nicht die Schaltfläche Xcode abspielen).

(Hatte das Problem auf Xcode 11 -beta 4 nach dem Umschalten auf Unit-Test mit Xcode-Wiedergabetaste lang gedrückt)

Lukas
quelle
4

Kam auf diese Seite mit dem gleichen Problem (C-Code in Xcode 6 stoppte nicht an Haltepunkten) und keine der oben genannten Lösungen funktionierte (das Projekt war praktisch sofort einsatzbereit, was die Einstellungen angeht, so dass die Debugger-Einstellungen kaum eine Chance hatten auf den falschen Wert eingestellt sein) ...

Nachdem ich einige Zeit damit verbracht hatte, das Problem zu reduzieren, fand ich endlich den Schuldigen heraus (für meinen Code):

Xcode (/ LLVM) mag keine #linePräprozessorbefehle im Bison-Stil .

Durch das Entfernen wurde das Problem behoben (der Debugger wurde an meinen Haltepunkten gestoppt).

Dave
quelle
4

Für Xcode 4:

go Product -> Debug ->  Activate Breakpoints
Evya
quelle
Vielen Dank! das hat geholfen. Ich wollte das selbst posten, anscheinend habe ich aus Versehen pushedY gedrückt.
Ovi
2

Ich habe viele Probleme mit Haltepunkten in Xcode (2.4.1). Ich verwende ein Projekt, das nur andere Projekte enthält (wie eine Lösung in Visual Studio). Ich finde manchmal, dass Haltepunkte überhaupt nicht funktionieren, es sei denn, im Startprojekt ist mindestens ein Haltepunkt festgelegt (dh derjenige, der den Einstiegspunkt für meinen Code enthält). Wenn sich die einzigen Haltepunkte in Projekten auf "niedrigerer Ebene" befinden, werden sie einfach ignoriert.

Es scheint auch so, als ob Xcode Haltepunktoperationen nur dann korrekt verarbeitet, wenn Sie im Projekt, das die Quellzeile enthält, auf der sich der Haltepunkt befindet, auf den Haltepunkt einwirken.

Wenn ich versuche, Haltepunkte über ein anderes Projekt zu löschen oder zu deaktivieren, wird die Aktion manchmal nicht wirksam, obwohl der Debugger dies anzeigt. Ich werde mich also an deaktivierten Haltepunkten oder an einem (jetzt unsichtbaren) Haltepunkt befinden, den ich zuvor entfernt habe.

Charles Anderson
quelle
2

Ich habe meine Haltepunkte nicht funktionieren lassen und dann "Alle Ziele erstellen / bereinigen" ausgeführt, damit sie wieder funktionieren.


quelle
2

Ich denke, das Problem könnte die Inkompatibilität zwischen Geräteversionen und Xcode sein. Ich habe dieses Problem beim Versuch, auf meinem iPhone 4S unter iOS 5.0.1 zu debuggen. Ich benutze immer noch Xcode 3.2.5. Ich habe die Symbole vom Mobilteil erhalten, indem ich im Organizer-Fenster "Dieses Gerät für die Entwicklung verwenden" ausgewählt habe. Dieses Telefon weigert sich jedoch, einen Haltepunkt zu setzen. Mein altes 3GS wird einen Haltepunkt haben, dasselbe Xcode-Projekt, dieselben Einstellungen ... nur ein anderes Gerät und es läuft iOS 4.0. Ich denke, dies ist ein Xcode-Fehler in 3.2.5, da ich die Symbole habe. Nachdem ich alle hier veröffentlichten Lösungen ausprobiert habe, habe ich beschlossen, dass die Lösung für mein Problem darin besteht, ein Upgrade auf XCode 4 durchzuführen. Möglicherweise können Sie nicht effektiv debuggen, es sei denn, Ihr Basis-SDK ist mindestens so hoch wie das System, auf dem debuggt werden soll. Vielleicht ist das offensichtlich - kann jemand bestätigen?

Bearbeiten: Ich werde aktualisieren, wenn ich bestätigen kann, dass dies wahr ist.

Gavin
quelle
2

Das Löschen meines Build-Ordners löste das Problem für mich.

Jack Bellis
quelle
2

Stellen Sie dazu und auch für Xcode 6 und höher sicher, dass die Schaltfläche für den Haltepunktstatus aktiviert ist (die blaue pfeilartige Schaltfläche):

Geben Sie hier die Bildbeschreibung ein

df611
quelle
1

In Xcode 4

- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug 
-      but I have other targets set to AdHoc which debug fine once Debugger is set
brian.clear
quelle
1

Ich habe das Problem gefunden. Irgendwie wurde in meinem XCode die Option " Disassembly beim Debuggen anzeigen " aktiviert, wodurch dieses Problem auftritt. Als ich es deaktivierte, stoppte mein Debugger in meinem Quellcode.

Sie finden es unter: Product->Debug Workflow->Show Disassemblybeim Debuggen.

Perumal
quelle
1

Sie können Haltepunkte im Dropdown-Menü aktivieren / deaktivieren Geben Sie hier die Bildbeschreibung ein

Stan
quelle
1

Wenn alles andere fehlschlägt, können Sie anstelle eines Haltepunkts die folgende Funktion aufrufen:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

Um fortzufahren, setzen Sie i manuell auf Null und drücken Sie dann die Wiederaufnahme-Taste.

William Jockusch
quelle
1

In XCode 6.3.1 ist mir dasselbe passiert. Ich habe es geschafft, es zu beheben durch:

  • Gehen Sie zu Ansicht-> Navigatoren-> Debug-Navigatoren anzeigen
  • Klicken Sie mit der rechten Maustaste in das Projektstammverzeichnis -> Haltepunkte verschieben (falls ausgewählt, die Option Benutzer)
  • (Ich habe auch die Option " Haltepunkte freigeben" ausgewählt , obwohl ich nicht sicher bin, ob dies erforderlich ist.)

Nach dieser Änderung habe ich die Optionen zum Verschieben von Haltepunkten wieder auf das Projekt zurückgesetzt und die Option zum Teilen von Haltepunkten deaktiviert. Dies funktioniert weiterhin.

Ich weiß nicht genau warum, aber das bringt meine Haltepunkte zurück.

Osk
quelle
1

Ich habe alle oben genannten Dinge ausprobiert, aber für mich hat es nur einmal funktioniert, die Debugging-Haltepunkte zu deaktivieren und dann zu aktivieren.

user8032120
quelle
@IshantMrinal Warum ist das nicht relevant? Der Benutzer gab eine Antwort, die in seinem Szenario funktionierte.
Noel Widmer
0

Wenn Sie Ihren Haltepunkt festlegen, klicken Sie mit der rechten Maustaste, und Sie sollten verschiedene Optionen für die Behandlung des Haltepunkts erhalten (Protokollvariablen und Fortfahren, Ausführung anhalten usw.).

Stellen Sie außerdem sicher, dass in den Debug-Einstellungen nicht "Symbole träge laden" ausgewählt ist.

(Gilt für Xcode 3.1, nicht sicher über frühere / zukünftige Versionen)

Scott Swezey
quelle
0

Stellen Sie außerdem sicher, dass die AppStore-Distribution der App nicht auch auf dem Gerät installiert ist.


quelle
0

Wenn Sie eine Plist-Datei "Entitlements" für Ihren Debug-Modus haben (möglicherweise, weil Sie mit dem Schlüsselbund arbeiten), stellen Sie sicher, dass die Plist-Datei die Zeile "get-task-allow" = YES enthält. Ohne sie wird das Debuggen und Protokollieren unterbrochen.

Davidcann
quelle
0

Es scheint 3 Zustände für die Haltepunkte in Xcode zu geben. Wenn Sie darauf klicken, werden die verschiedenen Einstellungen durchlaufen. Dunkelblau ist aktiviert, Grau ist deaktiviert und ich habe manchmal ein Hellblau gesehen, bei dem ich erneut auf den Haltepunkt klicken musste, damit er die dunkelblaue Farbe annimmt.

Stellen Sie außerdem sicher, dass Sie es mit dem Befehl debug und nicht mit dem Befehl run starten. Sie können dies tun, indem Sie entweder Option + Befehl + Zurück oder die Option Los (Debuggen) im Ausführungsmenü drücken.

crackity_jones
quelle
0

Ich habe Xcode 3.2.3 SDK 4.1 Haltepunkte schlagen zufällig fehl. Ich habe festgestellt, dass sie wieder funktionieren, wenn Sie den Build bereinigen und den Touch-Befehl unter Build verwenden.

Damon McGIll
quelle
0

Hier ist eine dunkle, auf die ich gestoßen bin: Wenn Sie an einer gemeinsam genutzten Bibliothek (oder einem Plugin) arbeiten, werden Ihre Haltepunkte beim Start gelb, was dazu führen kann, dass Sie frustriert auf Ihre Tastatur hämmern und den Debug-Prozess beenden. Tu das nicht! Die Symbole werden erst geladen, wenn die App die Bibliothek lädt. An diesem Punkt werden die Haltepunkte gültig. Ich bin auf dieses Problem mit einem Browser-Plugin gestoßen ... BPs wurden deaktiviert, bis ich zu einer Seite navigierte, die mein Plugin instanziierte.

Tim Keating
quelle