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
Scarica

trace assisted software debugging