come ottenere il più possibile da dbx
Domanda
Faccio TDD su base giornaliera per il mio sviluppo C ++ su Solaris10. Ha notevolmente ridotto il tempo che devo impiegare con il mio debugger, ma a volte questa è l'unica opzione.
DBX è piuttosto potente ma non così intuitivo. Si noti che sto parlando della console DBX e non della GUI di SunStudio per DBX).
Quali sono i migliori consigli sulla produttività che puoi dare per il debug di dbx C ++?
PS. La modifica del debugger non è un'opzione.
Soluzione
Ho aggiunto alcuni siti ai segnalibri relativi a dbx. Eccoli, in nessun ordine particolare nel caso in cui possano esserti utili:
- Perché non riesci a trovare la mia funzione?
- Guida online per il debugger Dbx
- Sun Studio: debug di un'applicazione multi-thread w / dbx
- gdb vs. dbx: mappatura dei comandi e confronto delle funzionalità
- Importazione di informazioni di debug in dbx
- riga di comando dbx: vedi altro sorgente
- Sun Studio C ++ - Your .dbxrc (NB: adapt il tipo intero utilizzato per trasmettere i puntatori in base alla dimensione del puntatore)
- Sun Studio: Analisi delle perdite di memoria con dbx
- Sun Studio: Raccolta di allocazioni di memoria / perdite di dati, da un processo in esecuzione
EDIT il 19 luglio 2012: ho cercato di correggere diversi link da quando il blog di Chris Quenelle si è spostato. Alcuni articoli sono ancora accessibili grazie alla macchina di ritorno.
Altri suggerimenti
Una delle potenti funzionalità di dbx è il ksh incorporato. È possibile scrivere funzioni shell complesse come si potrebbe desiderare di stampare viste personalizzate di strutture dati o seguire i puntatori in un percorso specifico. La shell è una vecchia variante di pdksh, quindi non è la migliore per la programmazione, ma è molto meglio che non avere un linguaggio integrato da usare. C'è anche un ampio aiuto disponibile dalla riga di comando. Un trucco per cercare l'aiuto è usare " vi $ helpfile " dall'interno della shell dei comandi dbx. Questo modifica i dati grezzi del file della guida in un file di grandi dimensioni. Puoi vedere alcuni esempi di funzioni della shell nel file dbxrc fornito con dbx e caricato di default. Puoi vedere un esempio più sofisticato guardando il modulo di integrazione libumem. Puoi trovarlo qui:
http://blogs.oracle.com/quenelle/entry/using_dbx_and_libumem_to
Anch'io devo usare dbx al lavoro e capire le tue frustrazioni!
Alcuni suggerimenti che ho scoperto che rendono la mia vita un po 'più semplice:
Utilizzando il sistema di comandi integrato in questo modo:
when stop {stampa qualunque cosa ; }
Ovviamente non funziona quando qualunque cosa è fuori portata, ma lo trovo abbastanza utile. Devo ancora avere molta gioia con la funzione "trace", YMMV.
Creare il tuo file .dbxrc ti semplifica la vita, così come la " pathmap " caratteristica.
Infine, questo è ovvio solo se lo conosci già, ma prova Manuale di Sun .
Non è particolarmente ben scritto, ma è ancora una lettura essenziale.