Il problema:Come utilizzare il contenuto dello stack in una condizione di punto di interruzione LLDB?
Ho una situazione in cui abbiamo una riproduzione multimediale durante il lancio, e objc_exception_throw() colpisce circa 5 volte durante quel periodo, ma viene sempre preso, ed è modo sud di l'oggetto del lettore multimediale.
Sono stanco di entrambi (a) dover continuare manualmente n volte, o (b) di dover lasciare i punti di interruzione disabilitati fino a dopo il completamento della riproduzione.
Quello che ho provato:
- rendendo il punto di interruzione ignorare i primi cinque colpi (problema: non è sempre esattamente cinque volte)
- creare il mio punto di rottura simbolica con il mio obiettivo come il modulo (problema: nulla è cambiato)
Quello che mi piacerebbe fare:
Una soluzione che viene in mente è quella di valutare lo stack quando il punto di interruzione colpisce e continuare se in esso sono elencati un particolare metodo o funzione. Ma non ho idea di come farlo.
Altre idee benvenute.
Accidenti, amico. La migliore risposta che avrei potuto sperare. – MikeyWard
Bella risposta. L'unica avvertenza è che questo '' continua' 'se uno qualsiasi di 'ignored_functions' appare in qualsiasi punto dello stack, invece di controllare semplicemente il frame" sopra "' objc_exception_throw'. –
@JasonMolenda Completamente corretto."Ovunque nello stack" era quello che pensavo fosse voluto in base a "valutare lo stack quando il punto di interruzione colpisce e continuare se in esso è elencato un particolare metodo o funzione". Sarebbe semplice adattarsi a fare 'if frame.GetThread(). GetFrameAtIndex (1) .GetFunctionName() in ignored_functions:' invece. L'intuizione chiave è di usare una funzione Python come comando breakpoint. –