2009-08-17 10 views
6

Quando si simbolizzano i rapporti sugli arresti anomali, ho notato che i numeri di linea sono disattivati. Ho provato questo con un progetto in cui ho deliberatamente causato un crash. Sembra che il numero di linea generato non includa determinate linee, ad es. righe di commento o istruzioni del preprocessore del compilatore (non sono sicuro di ciò che fa e non include) ...Come ottenere i numeri di riga corretti nei rapporti di arresto anomalo simbolizzati (iPhone/Mac)?

C'è un modo semplice per ottenere dal numero di linea "disattivato" nel rapporto di arresto anomalo simbolizzato alla riga di codice effettiva in la fonte?

Edit: Un esempio di una riga in un report incidente symbolicated:

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320) 

Così, il numero di riga 320 è quasi corretta, ma non esattamente. Sono poche righe ...

risposta

6

In una parola ... no. Se stai guardando una linea come questa in un crash report:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

Il "43" non è un numero di riga, ma una posizione di memoria dall'inizio della funzione. Il codice come lo hai scritto semplicemente non esiste nel file binario compilato - il compilatore ottimizza e modifica il codice (in una build Release, almeno) in modo che spesso non corrisponda a ciò che hai scritto.

Purtroppo, la soluzione è quella di fornire la persona che sperimenta l'incidente con una versione di debug che è possibile eseguire il debug remoto o almeno buttare fuori NSLog() dichiarazioni per contribuire a rintracciare il basso, e/o scrivere i metodi più piccoli.

+2

Suvati per "scrivere metodi più piccoli" :) – rpetrich

+0

Intendevo i numeri di un registro anomalie simbolizzato, ad es. il "320" in: 7 Luisterpaal 0x00005de2 - [Connessione SWFMP3: didReceiveData:] (SWFMP3.m: 320) –

3

Questo Technical Note mostra come mettere in relazione la relazione al codice di

+0

Non ero in grado di ottenere numeri di riga più precisi, ma questa è una risorsa killer da aggiungere ai segnalibri. – ckhan

0

ho avuto anche questo problema, ma solo perché stavo guardando una nuova versione di codice quello che è stato compilato nel binario che si è schiantato. Quando sono tornato nella mia cronologia delle fonti e ho trovato la versione corrispondente della fonte, i numeri di riga corrispondono esattamente.

Problemi correlati