it-swarm.it

Perché i miei punti di interruzione non funzionano?

Ho impostato i punti di interruzione ma Xcode sembra ignorarli.

95
AlanKley

Prima di tutto, sono d'accordo al 100% con le persone precedenti che hanno detto di disattivare OFF 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 è andata così: "dai, per favore, pensi davvero che non lo saprei meglio ...... oh.")

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

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

Ci sono diverse altre proprietà in Target >> Ottieni informazioni che potrebbero interessarti. Cerca cose come l'ottimizzazione o la compressione del codice e disattiva quella roba (suppongo che tu stia lavorando in una modalità di debug, quindi questo non è un cattivo consiglio). Inoltre, cerca cose come simboli di stripping e assicurati che sia anche OFF. Ad esempio, "Rimuovi prodotto collegato" deve essere impostato su "No" per la destinazione di debug.

139
pestophagous

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

1) Assicurati che il target -> schema -> Esegui - sia in modalità Debug (era Rilascio)

2) Assicurati di selezionare l'opzione "Eseguibile debug" vedi sotto:

enter image description here

32
Oded Regev

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

25
AlanKley

Stavo avendo questo stesso problema (di nuovo). Dopo aver verificato tre volte "Carica pigramente i simboli" e messo a nudo i flag di generazione informazioni di debug, ho fatto quanto segue:

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

Puoi svolgere la stessa attività nel Finder facendo clic con il tasto destro/opzione sul pacchetto .xcodeproj e selezionando "Mostra contenuto pacchetto".

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

14
Frank Szczerba

Per Xcode 4.x: Vai a Prodotto> Debug Workflow e deseleziona "Mostra smontaggio durante il debug".

Per Xcode 5.x Vai a Debug> Debug Workflow e deseleziona "Mostra smontaggio durante il debug".

12
bneupaane

Vedi questo post: Breakpoint non funzionanti in Xcode? . Potresti premere "Esegui" anziché "Debug" nel qual caso il tuo programma non è in esecuzione con l'aiuto di gdb, nel qual caso non puoi aspettarti che i punti di interruzione funzionino!

8
Soong

Un'altra ragione

Impostare DeploymentPostprocessing su NO in BuildSettings - dettagli qui

In breve -

L'attivazione di questa impostazione indica che i file binari devono essere rimossi e che la modalità file, il proprietario e le informazioni sul gruppo devono essere impostati su valori standard. [DEPLOYMENT_POSTPROCESSING]

enter image description here

7
gbk

Per Xcode 4:

go Product -> Debug ->  Activate Breakpoints
4
evya

È venuto a questa pagina con lo stesso problema (il codice C in Xcode 6 non si fermava ai punti di interruzione) e nessuna delle soluzioni sopra funzionava (il progetto era praticamente pronto all'uso, per quanto riguarda le impostazioni, quindi poche possibilità per qualsiasi impostazione del debugger di essere impostato sul valore errato) ...

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

Xcode (/ LLVM) non piace Bison-style #line comandi preprocessore.

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

4
Dave

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

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

4
Strinder

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

Vai a Debug> Debug Workflow e assicurati che 'Mostra sempre disassemblaggio' sia disattivato. Semplice come quella. :(

3
Gaz Long

Questo potrebbe essere uno dei possibili motivi per cui ciò accade .... vai su Prodotto> Schema> Modifica schema> .. In Esegui> info> Controllo eseguibile "Esegui debug".

2
Soropromo

Penso che il problema potrebbe essere l'incompatibilità tra le versioni del dispositivo e Xcode. Ho questo problema quando provo a eseguire il debug sul mio iPhone 4S con iOS 5.0.1. Sto ancora usando Xcode 3.2.5. Ho ricevuto i simboli dal portatile selezionando "usa questo dispositivo per lo sviluppo" nella finestra Organizer. Questo telefono rifiuta comunque il punto di interruzione. Il mio vecchio 3GS sarà breakpoint, stesso progetto Xcode, stesse impostazioni ... solo un dispositivo diverso e funziona con iOS 4.0. Immagino che questo sia un bug Xcode in 3.2.5, dato che ho i simboli. Avendo provato finora tutte le soluzioni pubblicate qui, ho deciso che la soluzione al mio problema è di andare avanti e passare all'XCode 4. Forse non è possibile eseguire il debug in modo efficace a meno che l'SDK di base non sia almeno alto quanto il sistema su cui eseguire il debug. Forse è ovvio: qualcuno può confermare?

Modifica: aggiornerò quando posso confermare che è vero.

2
Gavin

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

2
Jack Bellis

Ho molti problemi con i punti di interruzione in Xcode (2.4.1). Uso un progetto che contiene solo altri progetti (come una soluzione in Visual Studio). A volte trovo che i punti di interruzione non funzionino affatto a meno che non ci sia almeno un punto di interruzione impostato nel progetto iniziale (cioè quello che contiene 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 di breakpoint solo se si agisce sul breakpoint quando ci si trova nel progetto che contiene la linea di origine su cui si trova il breakpoint.

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

2
Charles Anderson

Ho fatto in modo che i miei punti di interruzione non funzionassero e poi ho creato/Pulisci tutti i target per farli funzionare di nuovo.

2
snowytree

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

enter image description here

2
df611

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
1
brian.clear

Ho provato tutte le cose di cui sopra, ma per me la disattivazione dei punti di interruzione del debug una sola volta e quindi l'attivazione ha funzionato.

1
user8032120

 enter image description here

1
Stan

Ho trovato il problema. In qualche modo "Mostra smontaggio 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.

1
Perumal

Se tutto il resto fallisce, invece di un punto di interruzione, è possibile 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.

1
William Jockusch

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

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

Dopo aver apportato tale modifica, ho impostato le opzioni Sposta i punti di interruzione sul progetto e deselezionando le Condividi punti di interruzione opzione e funziona ancora.

Non so esattamente perché, ma questo mi fa tornare i punti di interruzione.

1
Osk

Su Xcode 6.4, dovevo riavviare il mio Mac.

(Ho provato ad abilitare/disabilitare i punti di interruzione, riavviare il dispositivo iOS, riavviare Xcode, eliminare i file di punti di interruzione dal pacchetto dell'area di lavoro ...)

0
user2067021

Se stai usando Subversion, ripristina i file del tuo progetto (solo) all'ultima volta che hai saputo che il debugger funzionava.

0
stephen

Eccone uno oscuro in cui mi sono imbattuto: se stai lavorando su una libreria condivisa (o un plugin), i tuoi punti di interruzione diventeranno gialli all'avvio, il che potrebbe farti martellare la tastiera per la frustrazione e uccidere il processo di debug. Bene, non farlo! I simboli non verranno caricati fino a quando 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 fino a quando non sono passato a una pagina che ha istanziato il mio plug-in.

0
Tim Keating

Questo succede di tanto in tanto con un progetto iOS almeno. Per risolverlo, ho dovuto riavviare il dispositivo iOS, uscire da Xcode e ricostruire il progetto.

0
kakyo

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

0
dan

Se hai provato tutti i controlli di base, verifica la presenza di Livello di ottimizzazione nelle impostazioni di destinazione e progetto del progetto. assicurati di aver selezionato Nessuno per il debug.

enter image description here

Ho avuto problemi con Xcode che ha perso punti di interruzione durante l'utilizzo del simulatore e con l'impostazione Avvio schema su "attendere l'esecuzione". Cambialo in "avvia automaticamente" e i punti di interruzione tornano in vita.

0
Richard

Un'altra cosa da verificare è che se si dispone di un file plist "Entitlements" per la modalità di debug (probabilmente perché si stanno eseguendo operazioni con il portachiavi), assicurarsi che il file plist abbia la riga "get-task-allow" = YES. Senza di essa, il debug e la registrazione verranno interrotti.

0
davidcann

Credo che un progetto possa anche essere corrotto per quanto riguarda i punti di interruzione. Ho un progetto, ad esempio, che NON si interromperà su alcun punto di interruzione che ricorda dalla sessione precedente. Ho scritto per la prima volta su questo qui

0
AlanKley

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 fino a quando non ho aggiornato il mio Safari a 5.1 da 4.0.5. Dopo aver installato nuovamente Safari 4.0.5, tutti i punti di interruzione hanno iniziato a funzionare senza modificare alcuna impostazione Xcode.

0
user917691

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

0
Damon McGIll

Un altro motivo per cui i punti di interruzione possono diventare gialli è se il file binario dell'applicazione di cui si sta eseguendo il debug è stato modificato dalla prima esecuzione. Nel mio caso, ho aggiunto una cartella alla cartella Contenuti/Risorse dell'applicazione dopo aver eseguito il debug del programma una volta. Durante l'esecuzione del debug dopo aver aggiunto la cartella, i punti di interruzione sono diventati gialli e sono stati ignorati. Ho modificato la mia procedura: ho fatto un clean, una build, ho aggiunto la cartella, quindi ho eseguito e tutto è andato bene.

Forse Xcode (o OS X) crea e ricorda la propria firma digitale dell'applicazione (che era non con firma digitale) e quindi, sentendo che l'applicazione è stata modificata, si rifiuta di provare a impostare punti di interruzione. Creando le mie mod prima della prima esecuzione (di debug) dell'applicazione, è stata fatta la firma digitale con le mie mod.

Tutto questo su OS X 10.6.8 usando Xcode 3.2.2.

0
user532477

Ho appena risolto questo problema in XCode 4.2, nessuna delle precedenti ha aiutato. Il fatto era (non sono sicuro di ciò che è realmente accaduto, ma forse questo aiuta qualcuno): il mio compagno di squadra ha creato nuove configurazioni di build e aggiornato il progetto in SVN. Avevo impostato la vecchia configurazione di build nelle impostazioni dello schema di esecuzione, quindi i passaggi per me erano:

  1. Prodotto -> Modifica schema ...
  2. Seleziona "Esegui% project_name.app%" (o qualunque sia la causa del problema)
  3. Nella combo configurazione build seleziona quella nuova configurazione build dal mio compagno di squadra

E questo è tutto, i punti di interruzione sono tornati di nuovo. Spero che sia di aiuto.

0
MANIAK_dobrii

Non ho fatto Xcode per un po ', ma ti consiglio di disabilitare "Zerolink" e "Carica simboli pigramente"; questo risolverà la maggior parte dei problemi. Zerolink è comunque un abominio.

0
duane

Sembra che ci siano 3 stati per i punti di interruzione in Xcode. Se fai clic su di essi, verranno visualizzate le diverse impostazioni. Il blu scuro è abilitato, il grigio è disabilitato e a volte ho visto un blu pallido che mi 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 l'opzione + comando + ritorno, oppure l'opzione Vai (debug) dal menu Esegui.

0
crackity_jones

Quando si imposta il punto di interruzione, fare clic con il pulsante destro del mouse e si dovrebbero ottenere diverse opzioni su come gestire il punto di interruzione (registrare e continuare, mettere in pausa l'esecuzione, ecc.)

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

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

0
Scott Swezey

Avere entrambi Xcode 5 e 6 GM ha causato la perdita della funzionalità breakpoint del primo (i beta Xcode 6 erano ok).

Ho provato molti dei metodi suggeriti, ma alla fine ho rinunciato e ora sto usando Xcode 6.

0
Rivera

Ciò che ho risolto nel mio caso è stato abbastanza semplice, in Xcode - Product - Clean Build Folder seguito da Product - Run (non il pulsante Play Xcode).

(È stato riscontrato il problema su Xcode 11 -beta 4 dopo essere passati al test dell'unità con il pulsante di riproduzione Xcode premuto a lungo)

0
Lukas

Puoi controllare un'impostazione nell'impostazione target Apple compilatore LLVM 4.1 Sezione di generazione del codice Genera simbolo di debug = SÌ

0
Pushan

Nel mio caso, ho scoperto che i punti di interruzione sono stati disattivati ​​accidentalmente. Puoi riattivarlo nuovamente tramite Debug-> Attiva punti di interruzione [Cmd + Y]. Se noti indicatori di punto di interruzione in grigio invece del solito indicatore blu, è probabile che sia così.

Come si è scoperto, puoi sempre attivare/disattivare l'attivazione dei punti di interruzione con i tasti Cmd + Y, potresti aver colpito questo tasto di combinazione senza accorgertene. Questo rapporto si basa su Xcode 7.2.

0
Benny Khoo

In caso di Xcode 4 e versioni successive * Carica pigramente i simboli * sembra essere è sceso . Quindi fai riferimento a questo post clicca qui

Una spiegazione semplice e dettagliata ha funzionato per me.

0
Ajit Satarkar