Ho impostato dei punti di interruzione ma Xcode sembra ignorarli.
Ho impostato dei punti di interruzione ma Xcode sembra ignorarli.
Risposte:
Prima di tutto, sono d'accordo al 100% con la gente precedenti che dicono che gira su 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 è stata di questo tipo: "dai, per favore, pensi davvero che non lo saprei meglio ... oh.")
Assicurati di non aver impostato accidentalmente "Active Build Configuration" su "Release".
In "Target" nella visualizzazione ad albero grafica del progetto, fare clic con il pulsante destro del mouse sul target e fare "Ottieni informazioni". Cerca una proprietà denominata "Genera simboli di debug" (o simile) e assicurati che sia CONTROLLATA (alias ON). Inoltre, potresti provare a trovare (anche in Destinazione >> 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 quella roba (presumo che tu stia lavorando in una modalità di debug, quindi questo non è un cattivo consiglio). Inoltre, cerca cose come rimuovere i simboli e assicurati che sia anche DISATTIVATO. Ad esempio, "Strip Linked Product" dovrebbe essere impostato su "No" per la destinazione di debug.
In Xcode 7, ciò che ha funzionato per me era:
1) Assicurati che la destinazione -> schema -> Esegui - sia in modalità Debug (era Rilascio)
2) Assicurati di selezionare l'opzione "Eseguibile di debug" vedi sotto:
Vai alle preferenze di debug di Xcode. Assicurati che "Carica simboli pigramente" NON sia selezionato.
Stavo solo avendo lo stesso problema (di nuovo). Dopo aver controllato tre volte "Carica pigramente i simboli" e aver rimosso e messo a punto i flag di generazione delle informazioni, ho fatto quanto segue:
Puoi eseguire la stessa operazione 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!
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 la modalità file, il proprietario e le informazioni sul gruppo devono essere impostate su valori standard. [DEPLOYMENT_POSTPROCESSING]
YES
solo nel mio subproject
e quindi i punti di interruzione non funzionavano subprojects
. E dopo aver impostato NO
, è stato perfetto!
Vedi questo post: I punti di interruzione non funzionano in Xcode? . Potresti premere "Esegui" invece di "Debug", nel qual caso il tuo programma non funziona con l'aiuto di gdb, nel qual caso non puoi aspettarti che i breakpoint funzionino!
Una delle possibili soluzioni per questo potrebbe essere .... vai su Prodotto> Schema> Modifica schema> .. Sotto Esegui> informazioni> Eseguibile seleziona "Eseguibile di debug".
Questo mi ha tenuto in Xcode 9 per mezza giornata frustrante. Alla fine è stata una semplice impostazione di debug.
Vai a Debug> Debug Flusso di lavoro e assicurati che "Mostra sempre disassemblaggio" sia disattivato. Semplice come quella. :(
Ciò che lo ha risolto nel mio caso è stato abbastanza semplice, in Xcode - Product - Clean Build Folder seguito da Product - Run (non il pulsante Riproduci Xcode).
(Si è verificato il problema su Xcode 11 -beta 4 dopo il passaggio a unit test con la pressione prolungata del pulsante di riproduzione Xcode)
Sono arrivato in questa pagina con lo stesso problema (il codice C in Xcode 6 non si ferma ai punti di interruzione) e nessuna delle soluzioni sopra ha funzionato (il progetto era praticamente fuori dagli schemi, dal punto di vista delle impostazioni, quindi poche possibilità per nessuna delle impostazioni del debugger di essere impostato su un valore errato) ...
Dopo aver perso un po 'di tempo a ridurre il problema, ho finalmente scoperto il colpevole (per il mio codice):
A Xcode (/ LLVM) non piacciono i #line
comandi del preprocessore in stile Bison .
La loro rimozione ha risolto il problema (il debugger si è fermato ai miei breakpoint).
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 funzionano affatto a meno che non ci sia almeno un punto di interruzione impostato nel progetto iniziale (cioè quello contenente il punto di ingresso per il mio codice). Se gli unici punti di interruzione sono in progetti di "livello inferiore", vengono semplicemente ignorati.
Sembra anche che Xcode gestisca correttamente le operazioni del punto di interruzione solo se agisci sul punto di interruzione quando sei 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 è. Quindi mi ritroverò a rompere su punti di interruzione disabilitati o su un punto di interruzione (ora invisibile) che ho rimosso in precedenza.
Ho avuto i miei punti di interruzione non funzionanti e quindi ho fatto 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 durante il tentativo di eseguire il debug sul mio iPhone 4S con iOS 5.0.1. Sto ancora usando Xcode 3.2.5. Ho ottenuto i simboli dal telefono selezionando "usa questo dispositivo per lo sviluppo" nella finestra Organizer. Tuttavia, questo telefono rifiuta il breakpoint. Il mio vecchio 3GS avrà un punto di interruzione, lo stesso progetto Xcode, le stesse impostazioni ... solo un dispositivo diverso e 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 fino ad ora, ho deciso che la soluzione al mio problema è andare avanti e aggiornare a XCode 4. Forse non è possibile eseguire il debug in modo efficace a meno che il proprio SDK di base non sia alto almeno quanto il sistema su cui eseguire il debug. Forse è ovvio - qualcuno può confermarlo?
Modifica: aggiornerò quando posso confermare che è vero.
L'eliminazione della mia cartella Build ha risolto il problema per me.
Mi è successa la stessa cosa in XCode 6.3.1. Sono riuscito a risolverlo:
Dopo aver apportato tale modifica, reimpostare le opzioni Sposta punti di interruzione nel progetto e deselezionando Condividi punti di interruzione opzione e funziona ancora.
Non so esattamente perché, ma questo mi riporta indietro i miei breakpoint.
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
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.
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.
Ho provato tutte le cose precedenti, ma per me solo la disattivazione dei punti di interruzione di debug una volta e poi l'attivazione ha funzionato.
Quando si imposta il punto di interruzione, fare clic con il pulsante destro del mouse e si dovrebbero ottenere diverse opzioni su come viene gestito il punto di interruzione (registro variabili e continua, sospensione dell'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)
Assicurati inoltre che la distribuzione AppStore dell'app non sia installata anche sul dispositivo.
Un'altra cosa da controllare è che se hai un file plist "Entitlements" per la tua modalità di debug (forse 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, il grigio è disabilitato e ho visto un blu pallido a volte che mi richiedeva di fare di nuovo 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 + ritorno o l'opzione Vai (debug) dal menu di esecuzione.
Ho Xcode 3.2.3 SDK 4.1 Breakpoints fallirà 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 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. Beh, non farlo! I simboli non verranno caricati fino a quando l'app non carica la libreria, a quel punto i punti di interruzione diventeranno validi. Mi sono imbattuto in questo problema con un plug-in del browser ... I BP sono stati disabilitati finché non sono passato a una pagina che ha istanziato il mio plug-in.