Trace assisted software debugging abstract Oggi è impensabile affrontare lo sviluppo di applicazioni embedded senza poter contare su un buon debugger. Lauterbach ha la soluzione per il debug di oltre 70 architetture, integrata dal supporto di rtos e kernel. Ma in alcune situazioni il solo debugger non basta, per i problemi più complessi è molto utile poter disporre del flusso del programma eseguito su cui fare analisi, profiling, coverage: il "trace assisted software debugging". In questo seminario mostreremo le tecniche e i sistemi per la registrazione del trace e come il trace consenta un debug rapido ed efficace. BetterEmbedded 2013 TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Maurizio Menegotto, Lauterbach Italia www.lauterbach.com ▪ 1 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 2 / 32 Lauterbach company overview Lauterbach è il principale produttore mondiale di strumenti di sviluppo e debug per microprocessori Lauterbach è una azienda tedesca che con oltre 30 anni di attività e oltre 100.000 postazioni di debug installate nel mondo, si è affermata come il leader mondiale per gli embedded debug tools ad alte prestazioni. ARCONE Technology Center, Germania L’azienda è molto forte tecnologicamente ed economicamente e investe per la continua innovazione dei prodotti, la ricerca di soluzioni innovative, l’espansione con filiali e sedi nel mondo. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 3 / 32 I punti di forza di Lauterbach Completa linea di prodotti per debug e test di sistemi embedded Prima nel supporto per nuovi processori ed architetture La più ampia gamma di microprocessori supportati: oltre 3500 core/CPU in oltre 250 famiglie quali ARM, Cortex, PowerPC, MIPS, x86, TriCore… Know-how tecnico ai massimi livelli e qualificato supporto tecnico locale Protezione dell‘investimento con sistemi modulari e aggiornabili TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 4 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 5 / 32 TRACE32 product line overview TRACE32 PowerTools I PowerTools sono i più avanzati hw/sw debugger oggi disponibili. Sono sistemi modulari e universali che supportano debug-port e trace-port di molte diverse cpu e architetture. TRACE32 PowerView PowerView è l’ambiente integrato di debug e l’interfaccia universale per tutti i sistemi Lauterbach. PowerView supporta qualsiasi CPU, compiler e RTOS/Kernel e integra le funzionalità di trace e analisi più sofisticate: performance, profiling, statistic, code-coverage. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 6 / 32 TRACE32 product line overview In Circuit Debuggers Un sistema di debug modulare basato su unità PowerDebug universali a cui si collegano diversi debug cables per le diverse architetture e debug-port Debug Cables • Supporto per ogni CPU • Supporto per ogni debug-port • Probes attivi ad alta velocità • Compatibili con tutti i PowerDebug PowerDebug II PowerDebug ETH PowerDebug USB-3 • Sistema entry level • Link USB2/USB3 • Sistema standard • Link USB + Eth 10/100 mbps • Espandibile a PowerTrace TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 • Sistema di seconda generazione • Link USB + Eth 10/100/1000 mbps • Espandibile a PowerTrace II www.lauterbach.com ▪ 7 / 32 TRACE32 product line overview In Circuit Trace Un sistema debug+trace modulare basato su unità PowerTrace a cui collegare diversi debug cables e trace probes per le diverse architetture e le diverse trace-port PowerDebug Combiprobe • Sistema a basso costo • 128MB trace storage • 200 Mhz trace clock • 1-4 bit trace port Trace Probes Autofocus • Parallel trace ETM/NEXUS, … • Serial Trace HSTP Aurora, … PowerTrace • Sistema di prima generazione • 256/512MB trace storage • > 350 Mhz trace clock TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 PowerTrace II • Sistema di nuova generazione • 1/2/4 GB trace storage • > GHz trace clock (HSTP) • Capacità Trace Streaming www.lauterbach.com ▪ 8 / 32 Trace32 product line overview Logic Analyzers Qualsiasi PowerDebug e PowerTrace può essere notevolmente potenziato con l’aggiunta di un logic/protocol analyzer integrato: PowerIntegrator. PowerIntegrator Può essere usato per: • I/O timing & trigger • Analizzatore di protocolli CAN, FlexRay, LIN, SPI, USB, I2C, Jtag, Seriale, PCI, DigRF, … • Data logger • Energy test • Bus-trace per cpu senza trace port TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 • 512 K-Sample • Max 204 canali • Max 500Mhz Probes • Digitali e Analogici • Per protocolli • Per bus memorie PowerIntegrator II • Max 256000 K-Sample • Max 102 canali • Max 500 Mhz • Stimuli Generator www.lauterbach.com ▪ 9 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 10 / 32 Cosa è il trace? Cosa è il Trace? Per “trace” si intende un sistema per la registrazione della sequenza di istruzioni eseguite e dei dati letti/scritti da una CPU, senza doverla fermare. Debugging Real-Time Tracing Scattare fotografie Fare un video TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 11 / 32 Trace: metodi a confronto I metodi per ottenere il trace differiscono a seconda se richiedono trace hardware aggiuntivo oppure se sono inclusi nel debugger stesso senza ulteriore hardware. Lauterbach supporta molti diversi metodi: 1. 2. 3. 4. 5. 6. 7. Questi metodi real-time Bus Trace consentono il program-trace Off-Chip Trace e spesso anche il data-trace. On-Chip Trace System Trace (dati) Software Trace (logger) Snooper Trace (campionato) Advanced Register Trace (step) TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 12 / 32 OFF-Chip Trace La scelta del metodo dipende dalle risorse della CPU e dal tipo di PowerTool disponibile. Oggi moltissime CPU integrano una off-chip trace-port che consente una analisi real-time e non invasiva del software. Questo è il metodo migliore Nexus Trace Port: • Freescale MAC71xx/72xx/91xx • Freescale MPC55xx/56xx/57xx • ST SPC56xx/57xx • ST MMDSP+ • Freescale StarCore, Argon+ • Freescale M*CORE • Freescale QorIQ (serial) Proprietary Trace Port: • ARM/Cortex ETM • MIPS eJTAG • Freescale Coldfire • Freescale PowerPC • AMCC PowerPC • Altera NIOS II • Xilinx Microblaze • NEC V850 • TI TMS320C55X, MSP430 • Renesas SH2/3/4 AUD,M32R • Infineon X-GOLD MCDS • Infineon Tricore, C166, MCDS • Microchip PIC32 I-Flow • Intel ATOM • … TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 13 / 32 Off-chip trace ETM: recording La trace port trasmette in tempo reale e in forma compressa informazioni sul flusso programma e dati. Il metodo non ha particolari restrizioni: • Richiede pochi pin • Permette velocità elevatissime • Consente trigger, filtering, data trace Recording Trace Flow ETM JTAG ARM/Cortex chip TRACE Ethernet or USB TRACE32 PowerView Trace Analysis PowerTrace II Trace Storage (up to 4 Gbyte) TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Debug Port CORE ETM Trace Generation ARM/Cortex chip con debug-port e trace-port www.lauterbach.com ▪ 14 / 32 Off-chip trace ETM: streaming Normalmente il trace viene registrato nel PowerTrace che ha uno storage da 512MB a 4GB. Per prolungare illimitatamente il tempo di registrazione si usa il TRACE STREAMING. In questo modo il trace-flow viene compresso dal PowerTrace II e trasferito via gigabit ethernet al host-pc dove viene registrato su hard-disk. Recording Streaming HW Compression Trace Flow ETM JTAG ARM/Cortex chip TRACE Gigabit Ethernet Hard Disk up to 1 Tera Frame TRACE32 PowerView Trace Analysis PowerTrace II Trace FIFO Buffer (up to 4GB) TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Debug Port CORE ETM Trace Generation ARM/Cortex chip con debug-port e trace-port www.lauterbach.com ▪ 15 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 16 / 32 Uso del trace: analysis, statistic, coverage I PowerTrace consentono il trace di lunga durata, con milioni o miliardi di istruzioni, che corrispondono a diversi secondi o minuti di esecuzione. In modalità STREAM si arriva ad 1 tera-frame ! Come utilizzare il trace? Il software PowerView è ricco di funzionalità di analisi del trace e semplifica la comprensione del comportamento dell’applicazione. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 17 / 32 Utilizzo del Real-Time Trace: PowerView 1) Trace-based Debugging Debug senza fermare la CPU Trovare bugs che appaiono solo in real-time 2) Ottimizzare con misure temporali Analizzare le performance del codice Analizzare eventi esterni 3) Qualificazione Dimostrare il rispetto dei requisiti real-time ISO 26262 Verificare il code coverage TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 18 / 32 Trace.List Trace.List mostra il flusso programma con diversi livelli di dettaglio TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 19 / 32 Trace.Chart Trace.Chart permette di analizzare e visivamente il nesting delle funzioni e di misurare i tempi TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 20 / 32 Trace.Stat & Trace.Performance Trace.Stat misura e analizza statisticamente i tempi di task, funzioni e parti del programma Perf.List individua i colli di bottiglia. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 21 / 32 Trace.Coverage Trace.COV code & data coverage. Marca le aree di programma eseguite e le aree dati lette o scritte. Esporta report di copertura. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 22 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 23 / 32 Trace Based Debugging E’ fuori dubbio che fermandosi in break nel punto dove si verifica un errore sia molto più facile comprenderlo e risolverlo perchè si è nel contesto dell’errore. Individuare il punto di break corretto è spesso la cosa più difficile. In molti casi non si ha idea di dove l’errore capiti. In altri non ci si può fermare. Procedere per tentativi può portare a enormi perdite di tempo... TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 24 / 32 Trace Based Debugging Trace List Il trace è di grande aiuto: è sempre attivo, ogni esecuzione in run o step viene registrata ed è visibile per comprendere cosa è accaduto. Ci si può fermare DOPO che il problema è accaduto e tornando indietro nel trace (= nel tempo) si può osservare il comportamento del programma nel punto in cui ha sbagliato: Istruzioni eseguite Data read/write TEMPO Istruzioni non eseguite Tempo relativo TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 25 / 32 Trace Based Debugging La comprensione di come il programma ha eseguito non è sempre un compito semplice (asm, ottimizzazioni, pipeline). Nel trace list infatti il codice non viene mostrato nell’ordine in cui è stato scritto, ma nell’ordine in cui è stato eseguito dalla CPU. Programma in memoria TEMPO INDIRIZZI TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Programma eseguito nel tempo www.lauterbach.com ▪ 26 / 32 Trace Based Debugging Context Tracking System (CTS) CTS è la soluzione: effettua la ricostruzione di contesti nel passato (registri e memoria). Ricostruisce tutti i contesti a ritroso nel tempo e li si possono analizzare “come se” ci si fosse fermati in break! Trace List Registers CTS Debug control Stack frame Source code Task state TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Variables www.lauterbach.com ▪ 27 / 32 Trace Based Debugging Context Tracking System (CTS) CTS è una “moviola” che consente di ri-eseguire avanti e indietro il programma ricostruendo in dettaglio il contenuto di registri, memoria, stack. Step avanti Step indietro Ricostruzione degli accessi r/w alle variabili locali TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 Function Nesting View www.lauterbach.com ▪ 28 / 32 Trace: una scelta importante La scelta del metodo di trace dipende principalmente dalla CPU impiegata e dalle sue risorse. I risultati che si ottengono dipendono dalla qualità dei trace tools. Il trace è: Lo strumento che permette di “vedere” cosa accade realmente durante l’esecuzione della vostra applicazione. Deve essere considerato come: La miglior garanzia di scoprire e risolvere rapidamente i bug. TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 29 / 32 Indice Lauterbach company overview TRACE32 product line overview Cosa è il trace? Uso del trace: analysis, statistic, coverage Uso del trace: trace based debugging Posso usare il trace sul mio target? TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 30 / 32 Cosa è necessario per avere il trace sul mio target? Scegliere una CPU con trace • Oggi ce ne sono moltissime • Il trace può essere off-chip o on-chip Prevedere un connettore per il trace • Se on-onchip è sufficiente la debug-port (es. JTAG) • Se off-chip è necessario aggiungere la trace-port (es. ETM) Scegliere un trace tool adeguato in funzione di: • Tipo e dimensione della trace-port • Velocità massima del trace-clock • Durata del trace desiderato TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 31 / 32 Alcuni esempi: Cortex-M Trace-port ETM 4 bit Trace-clock < 200Mhz PowerDebug Combiprobe PowerPC MPC56xx Trace-port NEXUS 4..16 bit ARM9/11 o Cortex A/R Trace-port ETM 4..32 bit Trace-clock a oltre 600Mhz PowerTrace NEXUS PowerTrace II ETM Autofocus II TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 32 / 32 Maurizio Menegotto [email protected] Per informazioni: www.lauterbach.com Domande? SI Risposte... NO Grazie! 13:00 Pranzo! TRACE32 Trace assisted software debugging ▪ Maurizio Menegotto ▪ Luglio 2013 www.lauterbach.com ▪ 33 / 32