Domanda

Ho impostato dei punti di interruzione ma Xcode sembra ignorarli.

È stato utile?

Soluzione

Prima di tutto, sono d'accordo al 100% con le persone precedenti che hanno detto svolta SPENTO Load Symbols Lazily.

Ho altre due cose da aggiungere.

(Il mio primo suggerimento sembra ovvio, ma la prima volta che qualcuno me lo ha suggerito, la mia reazione è stata in questo modo:"dai, per favore, pensi davvero che non saprei fare meglio......OH.")

  1. Assicurati di non aver impostato accidentalmente "Configurazione build attiva" su "Rilascio".

  2. Sotto "obiettivi" nella visualizzazione dell'albero grafico del progetto, fai clic con il pulsante destro del mouse sul bersaglio e fai "Ottieni informazioni". Cerca una proprietà denominata "Genera simboli di debug" (o simile) e assicurati che questo sia controllato (alias ON).Inoltre, potresti provare a trovare (anche in Target >> Ottieni informazioni) una proprietà chiamata "Formato informazioni di debug" e impostarla su "Nano con file dsym".

Ci sono una serie di altre proprietà in Target >> Ottieni informazioni che potrebbero interessarti.Cerca cose come l'ottimizzazione o la compressione del codice e disattiva quelle cose (presumo che tu stia lavorando in modalità debug, quindi questo non è un cattivo consiglio).Inoltre, cerca cose come la rimozione dei simboli e assicurati che anche questo sia disattivato.Ad esempio, "Strip Linked Product" deve essere impostato su "No" per la destinazione Debug.

Altri suggerimenti

In Xcode 7, ciò che ha funzionato per me è stato:

1) Assicurati che la destinazione -> schema -> Esegui - sia in modalità Debug (era Release)

2) Assicurati di selezionare l'opzione "Debug eseguibile" vedi sotto:

enter image description here

Vai alle preferenze di debug di Xcode.Assicurati che "Carica simboli pigramente" NON sia selezionato.

Stavo avendo lo stesso problema (di nuovo).Dopo aver controllato tre volte "Carica simboli pigramente" e aver rimosso ed eseguito il debug dei flag di generazione delle informazioni, ho eseguito quanto segue:

  1. esci da Xcode
  2. aprire una finestra di terminale e accedere alla directory del progetto
  3. cd nella directory .xcodeproj
  4. elimina tutto tranne il file .pbxproj (avevo frank.mode1v3 e frank.pbxuser)

Puoi eseguire la stessa attività nel Finder facendo clic con il pulsante destro del mouse/opzione sul pacchetto .xcodeproj e selezionando "Mostra contenuto pacchetto".

Quando ho riavviato Xcode, tutte le mie finestre erano state ripristinate alle posizioni predefinite, ecc., Ma i punti di interruzione funzionavano!

Per Xcode 4.x:Vai a Prodotto> Flusso di lavoro di debug e deseleziona "Mostra disassemblaggio durante il debug".

Per Xcode 5.x Goto Debug> Debug Workflow e deseleziona "mostra lo smontaggio durante il debug".

Vedi questo post: I punti di interruzione non funzionano in Xcode?.Potresti premere "Esegui" invece di "Debug", nel qual caso il tuo programma non viene eseguito con l'aiuto di gdb, nel qual caso non puoi aspettarti che i punti di interruzione funzionino!

Un'altra ragione

Impostato DeploymentPostprocessing su NO in BuildSettings - dettagli qui

In breve -

L'attivazione di questa impostazione indica che i binari devono essere spogliati e le informazioni di file, proprietario e gruppo devono essere impostate su valori standard.[DEPLOYMENT_POSTPROCESSING]

enter image description here

Sono arrivato a questa pagina con lo stesso problema (il codice C in Xcode 6 non si ferma ai punti di interruzione) e nessuna delle soluzioni di cui sopra ha funzionato (il progetto era praticamente fuori dagli schemi, dal punto di vista delle impostazioni, quindi poche possibilità che una qualsiasi delle impostazioni del debugger essere impostato sul valore sbagliato)...

Dopo aver perso un po' di tempo per risolvere il problema, ho finalmente capito il colpevole (per il mio codice):

A Xcode (/LLVM) non piace lo stile Bison #line comandi del preprocessore.

La loro rimozione ha risolto il problema (il debugger si è fermato ai miei punti di interruzione).

Per Xcode 4:

go Product -> Debug ->  Activate Breakpoints

Questo mi ha tenuto in Xcode 9 per mezza giornata frustrante.Alla fine è stata una semplice impostazione di debug.

Vai a Debug > Flusso di lavoro debug e assicurati che "Mostra sempre disassemblaggio" sia disattivato.Semplice come quella.:(

Soluzione per me con XCode 9.4.1 (non si è fermato a nessun punto di interruzione):

In Destinazione build -> Impostazioni build -> Livello di ottimizzazione:Passaggio da "Ottimizza per velocità" -> "Nessuna ottimizzazione" (ora è più lento ma funziona)

Ho molti problemi con i punti di interruzione in Xcode (2.4.1).Utilizzo un progetto che contiene solo altri progetti (come una soluzione in Visual Studio).A volte trovo che i punti di interruzione non funzionano affatto a meno che non sia impostato almeno un punto di interruzione nel progetto iniziale (ad es.quello contenente il punto di ingresso per il mio codice).Se gli unici punti di interruzione si trovano in progetti di "livello inferiore", vengono semplicemente ignorati.

Sembra anche che Xcode gestisca correttamente le operazioni dei punti di interruzione solo se si agisce sul punto di interruzione quando ci si trova nel progetto che contiene la riga di origine su cui si trova il punto di interruzione.

Se provo a eliminare o disabilitare i punti di interruzione tramite un altro progetto, l'azione a volte non ha effetto, anche se il debugger indica che lo ha fatto.Quindi mi ritroverò a interrompere su punti di interruzione disabilitati o su un punto di interruzione (ora invisibile) che ho rimosso in precedenza.

I miei punti di interruzione non funzionavano e quindi ho eseguito Build/Clean All Targets per farli funzionare di nuovo.

Penso che il problema potrebbe essere l'incompatibilità tra le versioni del dispositivo e Xcode.Ho questo problema quando tento di eseguire il debug sul mio iPhone 4S con iOS 5.0.1.Sto ancora utilizzando Xcode 3.2.5.Ho ottenuto i simboli dal telefono selezionando "usa questo dispositivo per lo sviluppo" nella finestra Organizzatore.Tuttavia, questo telefono rifiuta di eseguire il breakpoint.Il mio vecchio 3GS Volere punto di interruzione, stesso progetto Xcode, stesse impostazioni...solo un dispositivo diverso e funziona con iOS 4.0.Immagino che questo sia un bug di Xcode nella 3.2.5, poiché ho i simboli.Dopo aver provato tutte le soluzioni pubblicate qui finora, ho deciso che la soluzione al mio problema è procedere e aggiornare a XCode 4.Forse non puoi eseguire il debug in modo efficace a meno che il tuo SDK di base non sia alto almeno quanto il sistema su cui eseguire il debug.Forse è ovvio: qualcuno può confermare?

Modificare:Aggiornerò quando potrò confermare che è vero.

L'eliminazione della mia cartella Build ha risolto il problema per me.

Per questo, e anche per Xcode 6 e versioni successive, assicurati che il pulsante dello stato del punto di interruzione sia attivato (il pulsante blu a forma di freccia):

enter image description here

Nell'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

Ho trovato il problema.In qualche modo il "Mostra disassemblaggio durante il debug" è stato abilitato nel mio XCode che crea quel problema.Quando l'ho disabilitato, tutto il mio debugger si è fermato nel mio codice sorgente.

Puoi trovarlo sotto: Product->Debug Workflow->Show Disassembly durante il debug.

È possibile attivare/disattivare i punti di interruzione nel menu a discesaenter image description here

Se tutto il resto fallisce, invece di un punto di interruzione, puoi chiamare la seguente funzione:

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

Per riprendere, imposta manualmente i su zero, quindi premi il pulsante Riprendi.

Mi è successa la stessa cosa in XCode 6.3.1.Sono riuscito a risolverlo:

  • Andando a Visualizza->Navigatori->Mostra navigatori di debug
  • Fare clic con il tasto destro nel radice del progetto -> Sposta punti di interruzione (Se selezionata l'opzione Utente)
  • (Ho anche selezionato l'opzione condividere punti di interruzione, anche se non sono sicuro che sia necessario).

Dopo aver apportato questa modifica, ho impostato il file Sposta i punti di interruzione opzioni per tornare al progetto e deselezionare il file Condividi punti di interruzione opzione e funziona ancora.

Non so esattamente perché, ma questo ripristina i miei punti di interruzione.

Ho provato tutte le cose di cui sopra, ma per me disattivare i punti di interruzione del debug solo una volta e poi attivarli ha funzionato.

Questo potrebbe essere uno dei possibili motivi per ciò che accade .... Vai al prodotto> Schema> Schema di modifica> .. in esecuzione> Info> Controllo eseguibile "Debug Executable".

Quando imposti il ​​punto di interruzione, fai clic con il pulsante destro del mouse e dovresti ottenere diverse opzioni su come viene gestito il punto di interruzione (registra variabili e continua, sospendi l'esecuzione, ecc.)

Assicurati inoltre che "Carica simboli pigramente" non sia selezionato nelle preferenze di debug.

(Si applica a Xcode 3.1, non sono sicuro delle versioni passate/future)

Assicurati inoltre che sul dispositivo non sia installata anche la distribuzione dell'app AppStore.

Un'altra cosa da verificare è che se hai un file plist "Entitlements" per la modalità debug (probabilmente perché stai facendo cose con il portachiavi), assicurati che il file plist abbia la riga "get-task-allow" = YES.Senza di esso, il debug e la registrazione verranno interrotti.

Sembra che ci siano 3 stati per i punti di interruzione in Xcode.Se fai clic su di essi passeranno attraverso le diverse impostazioni.Il blu scuro è abilitato, lo sfondo grigio è disabilitato e a volte ho visto un blu pallido che richiedeva di fare nuovamente clic sul punto di interruzione per farlo passare al colore blu scuro.

Oltre a questo assicurati di avviarlo con il comando debug e non con il comando run.Puoi farlo premendo opzione + comando + Invio o l'opzione Vai (debug) dal menu Esegui.

Ho Xcode 3.2.3 SDK 4.1 I punti di interruzione falliranno in modo casuale.Ho scoperto che se pulisci la build e usi il comando touch sotto build, funzionano di nuovo.

Eccone uno oscuro in cui mi sono imbattuto:se stai lavorando su una libreria condivisa (o su un plugin), i tuoi punti di interruzione diventeranno gialli all'avvio, il che potrebbe farti martellare la tastiera per la frustrazione e interrompere il processo di debug.Beh, non farlo!I simboli non verranno caricati finché l'app non caricherà la libreria, a quel punto i punti di interruzione diventeranno validi.Ho riscontrato questo problema con un plug-in del browser...I BP sono stati disabilitati finché non ho navigato in una pagina che istanziava il mio plugin.

Stavo affrontando lo stesso problema quando volevo eseguire il debug di un plug-in Web in cui l'eseguibile personalizzato era Safari 5.1.Funzionava bene finché non ho aggiornato il mio Safari alla versione 5.1 dalla 4.0.5.Una volta installato nuovamente Safari 4.0.5, tutti i punti di interruzione hanno iniziato a funzionare senza modificare alcuna impostazione di Xcode.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top