Imparare i comandi GDB è nella mia lista dei desideri, ma nel frattempo cè un debugger grafico per piattaforme * nix che accetta comandi Windbg e ha funzionalità simili? Ad esempio, la capacità di far emergere più finestre di memoria modificabili, disassemblare automaticamente intorno a unarea mentre si cammina, impostare il sapore di disassemblaggio e avere una finestra con registri con valori modificabili?
Commenti
- @AshRj ah, capisco cosa intendi ora. Errore mio, mi scuso.
- Voltron è totalmente nuovo ma sembra promettere bene (non lho ancora testato).
- In SO: stackoverflow.com/questions/79023/…
Risposta
Ho avviato il mio frontend gdb chiamato gdbgui che è un server (in python) che ti consente di accedere a un frontend completo nel tuo browser .
Installa
pip install gdbgui --upgrade
o scarica su gdbgui.com
Funziona su tutte le piattaforme (Linux, macOS e Windows) e browser con JavaScript.
Esegui
Basta digitare
gdbgui
nel tuo terminale e tu Il browser aprirà una nuova scheda.
Funzionalità
- imposta / rimuovi punti di interruzione
- visualizza codice sorgente, con codice macchina inline opzionale
- seleziona frame corrente nello stack
- passa attraverso codice sorgente o codice macchina
- crea / esplora variabili
- visualizza / seleziona thread
- esplora memoria
- visualizza registri
- piena funzionalità del terminale gdb in modo da poter inviare comandi gdb tradizionali e visualizza loutput del programma gdb / inferiore
- layout ispirato al fantastico debugger di Chrome
- compatibile con Mozilla “RR, per il debug inverso
Commenti
- Questo è davvero un buon lavoro. Il design arriva al centro del caso duso medio. Mi piace. Supporta anche il debug remoto (o, piuttosto, supporta luso del comando
target remote host:port
gdb. Ben fatto. Forse aggiungere la possibilità di connettersi a un host remoto nel menu sarebbe una bella aggiunta -on. Sarebbe possibile ridurre la dimensione del ‘ register`? Tutte le informazioni sono disponibili, ma (almeno su ARM) puoi ‘ t vedere tutti i registri contemporaneamente, quindi devi scorrere. - I commenti qui non sono per il supporto individuale
gdbgui
. Apri un nuovo domanda su sx o utilizza i canali di supporto / bug tracker di gdbgui.
Rispondi
Anche se alcune persone non lo fanno ” Per la sua interfaccia, vale la pena ricordare che GDB ha anche la sua GUI incorporata (chiamata TUI).
Puoi avviare GDB in modalità GUI con il comando: gdb -tui
Un rapido riferimento ai comandi TUI può essere trovato qui: http://beej.us/guide/bggdb/#qref
Risposta
In genere ho usato Emacs GUD come frontend GDB.
Non è troppo difficile da usare, ti permette di impostare visivamente i punti di interruzione (o tramite la finestra GDB, se preferisci).
Ha più viste differenti a cui puoi accedere da un menu GDB di primo livello:
Consente anche sottigliezze come consentire di ispezionare i valori passando il mouse su di essi:
Per utilizzarlo, devi prima accedere a la cartella del tuo binario con C-x C-f
, quindi M-x gdb
(That “s” Alt + X
” , quindi digitando “gdb
“). Dopo averlo fatto, puoi digitare una riga di comando gdb o semplicemente premere [Enter]
per accettare il valore predefinito. Da lì, digita semplicemente “start” nella finestra di gdb con tutti i parametri che vuoi passare al programma che stai eseguendo il debug.
Dopo di che, sei praticamente doro, ma con una sola vista. I menu nella parte superiore dello schermo sotto “GUD” ti permetteranno di aprire altre visualizzazioni rilevanti per qualunque cosa tu stia tentando di eseguire il debug.(I frame sono finestre separate e “Windows” sono finestre in-frame)
Di solito, per impostazione predefinita, un punto di interruzione è impostato allavvio del programma e puoi quindi navigare nel codice usando i pulsanti nella parte superiore di la finestra o, se non disponi di codice, puoi personalizzare la visualizzazione per consentirti di eseguire lo smontaggio del file binario che stai guardando.
I pulsanti lungo la parte superiore della finestra circondati da “{} “servono per il passaggio a livello di codice, mentre i pulsanti con” <> “nella loro icona servono per il debug a livello di istruzione. Quindi probabilmente vorrai concentrarti sulla sinistra se stai eseguendo il normale debug del codice e concentrarti maggiormente sulla destra se stai entrando nel vero nocciolo.
Inoltre, se ti perdi, questa icona:
È un intero libro che può probabilmente rispondere alle tue domande. Lunica volta che non esiste in Emacs è se sei su Debian (Ubuntu va bene) e hai installato Emacs dai suoi repository. In questo caso dovrai installare “emacs<vesrsion>-common-non-dfsg
” per scaricare i manuali (con “<version>
” le cifre non decimali restituite da M-x version
in Emacs)
Commenti
- Questo è Spacemacs e non GNU Emacs giusto?
- No. Questo è semplice ‘ ol GNU Emacs, ho solo il mio stile in modo che assomigli a questo. Niente di ciò che ho menzionato sopra è specifico per la mia configurazione. (E in realtà, anche Spacemacs è solo un insieme di configurazioni di Emacs, ma non ho idea se cambia luso di GDB)
- Questo ‘ non è disponibile in Emacs. Quale sistema operativo e pacchetti stai utilizzando?
- Sembra che tu abbia il pacchetto Power Line installato tra altre cose. emacswiki.org/emacs/PowerLine
- @mrbean Questo su Linux Mint e sì, penso che il mio tema Emacs nel 2013 era base16-domani con PowerLine (Bel riconoscimento tra laltro!)
Risposta
La mia opinione è un po di parte ma, per il debug dellassembler, il miglior “frontend” GDB disponibile è IDA (supporta la comunicazione con obiettivi GDB remoti). Per il debug del codice sorgente, tuttavia, consiglierei KDBG.
Commenti
- In realtà consiglierei di utilizzare IDA ‘ s
linux_server
su GDB remota, ‘ è più capace e veloce (poiché utilizza il protocollo binario e non quello basato su testo ). - Per favore, giustifica la tua raccomandazione. Le risposte sono scritte non solo per lOP ma per tutte le altre persone che potrebbero imbattersi in questo in futuro.
- Fondamentalmente perché hai tutta la potenza di IDA (plugin, script IDAPython, GUI conosciuta,. ..) e non è solo un frontend per GDB.
Answer
Anche a rischio di gravi downvoting , “Mi piacerebbe schierarmi con il semplice vecchio prompt gdb
e sconsigliare un frontend GUI. Ho iniziato a imparare un uso più avanzato di GDB leggendo Art of Debugging alcuni anni fa. Descrive GDB e DDD così come Eclipse come frontend per GDB.
Certamente la maggior parte delle volte utilizzo Vim come IDE sul terminal e tmux
(in precedenza screen
con byobu
). Pertanto sto passando da un riquadro allaltro in il mio multiplexer di terminale per passare rapidamente tra codice e debugger. Il prompt di GDB – dopo alcune settimane di prova con TUI – ha inde e tutto ciò che ho sempre desiderato e dovresti tenere presente che puoi attaccarti più volte allo stesso processo (dando così unocchiata alla memoria nel modo in cui la descrivi).
Sembra che tutti i frontend siano in ritardo un po – nessuna sorpresa – e ha più senso fare i conti con il prompt di GDB e le sue sottigliezze e stranezze. Tieni presente che su una configurazione bare metal potrebbe essere lunica cosa che hai. Quindi ha senso impararlo anche se trovi una GUI “decente” secondo i tuoi standard.
Le versioni più recenti di GDB supporteranno anche lo scripting Python e attraverso questo forniranno un set molto potente di strumenti per il debug, anche solo dalla riga di comando.
Se insisti assolutamente nellusare un frontend GUI, consiglierei anche IDA Pro per il semplice motivo che ti offre un unico frontend per una varietà di debugger e devi impara (o personalizza) le sue scorciatoie solo una volta. Svantaggi: prezzo e flessibilità quando non si dispone di una licenza su una macchina particolare o non si ha modo di eseguire il tunneling a un server GDB ecc …
Non sono a conoscenza di alcun frontend di GDB che accetta i comandi WinDbg. E posso solo sottolineare ancora una volta: raccoglierai comunque i frutti del tempo investito nellapprendimento del GDB vanigliato. Non esitare dallo sforzo. Ci sono molte cose in WinDbg che sono specifiche per il modo in cui funziona Windows, il kernel di Windows e così via. GDB è molto più generico.
Risposta
Vorrei “suggerire DDD .
Se hai il codice sorgente, dovresti controllare QTCreator . Il suo debugger è simile a quello di Visual Studio, se lo conosci.
Commenti
- I ‘ ho utilizzato
DDD
e ‘ un fan. ‘ controllerò QtCreator, grazie! - DDD è ottimo per visualizzare strutture di dati, puoi disporle su una lavagna (una sorta di tavolo leggero ). Quindi data-display-debugger.
- DDD a prima vista sembra strano e obsoleto, ma ‘ è davvero potente.
Answer
Non GUI ma un buon sostituto una volta che ci si abitua (e personalmente penso che sia più veloce per la maggior parte delle cose ) -> https://github.com/gdbinit/Gdbinit .
Mi sono ricordato quando ho iniziato a invertire * nix e avevo per affrontare gdb per la prima volta. Lho odiato e + mammon original “s gdbinit mi ha salvato la giornata. In questi giorni preferisco gdb alla maggior parte dei debugger GUI.
Provalo 🙂
Divulgazione completa: sono lautore dello strumento.
Commenti
- Dovresti scrivere una dichiarazione che Gdbinit è un software che ‘ stai mantenendo …
- Così? È ‘ gratuito, disponibile per chiunque. Non esattamente cercando di vendere qualcosa qui. Accidenti …!
- @ fg- Potrebbe trattarsi ancora di pubblicità che non si basa sullesperienza ma esclusivamente sul fatto che hai scritto quello strumento.
- Quindi puoi ‘ t pubblicizzare i tuoi strumenti utili che risolvono problemi e devi aspettare che altri lo facciano? Questa ‘ è una modalità di pensiero davvero strana per un risolutore di problemi ” community “.
- @ fG- leggi le domande frequenti: reverseengineering.stackexchange.com/faq#promotion
Risposta
Non mi piace molto DDD, è così 90 “nella sua GUI.
Lo farei mi piace raccomandare KDBG, che è un frontend di KDE per gdb. Inoltre, potresti dare unocchiata a Cgdb, che è unestensione di curses per gdb.
Ultimamente mi sono imbattuto in Nemiver , sembra davvero promettente.
Commenti
- KDBG funziona bene anche per il disassemblaggio e il debug senza sorgente? I loro screenshot mostravano solo il codice sorgente.
- Non ‘ non lo so, non lho mai provato prima …
- ” ‘ s so 90 ‘ s in esso ‘ s GUI ” … più simile a 80 ‘ s
- Laspetto della GUI è lunico svantaggio?
Risposta
cgdb è anche unottima opzione se usi Vim.
cgdb condivide molti comandi con vim, come la ricerca regex e molti altri. Dalla home page di cgdb:
Linterfaccia della tastiera è modellata su vim, quindi gli utenti di vim dovrebbero sentirsi a casa usando cgdb.
Risposta
Di solito uso Vim + gdb in modalità CLI durante la codifica ecc. Ma a volte una GUI è preferibile.
Unaltra opzione, oltre a quelle menzionate, è Code :: Blocks. Utilizza GDB e CDB come back-end. Per GDB puoi selezionare AT & T, Intel o custom per lo smontaggio. Supporta la modalità mista e lelenco delle istruzioni pure. Puoi impostarlo ulteriormente per valutare le variabili (nel codice) sotto il cursore ecc.
Cè solo una finestra di dump della memoria, ma puoi anche inserire comandi GDB grezzi in Riga di comando in basso che viene stampata sulla finestra – quindi ad es dump della memoria.
Ha una finestra separata per i registri della CPU, non sono modificabili direttamente, ma puoi impostare i valori dalla riga di comando menzionata, così come altri valori:
set $eax = 123 set var xyz = "q"
Limmagine sotto lo mostra in azione con il debug del sorgente su un KVM (apri il link per visualizzarlo in formato più grande).
Un problema che ho riscontrato sono alcuni bug della GUI, ecc. quando lo eseguo su Ubuntu 12 – UB 12 ha la versione 10.10. Ma la compilazione e linstallazione della versione corrente , 12.11, è stata indolore.
Ad es. per linstallazione del percorso di installazione personalizzato (se la tua distribuzione non dispone di una versione aggiornata e desideri averle entrambe):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
Risposta
Questo articolo del Dr Dobbs mostra in dettaglio le GUI per il debug su SO Linux. Consiglio il Qt-Creator chiamato debug GDB basato su ambiente Linux.Ad ogni modo larticolo esamina solo il debug del codice C ++, ma questo è sufficiente per mostrare le funzionalità di debug dei GDB.
Risposta
Lo consiglierò UltraGDB , che è il frontend GUI GDB e IDE leggero basato sulla tecnologia Eclipse.
Risposta
È presente la GUI Affnic Debugger . Non è gratuito ma esiste una versione lite. È disponibile per Windows, Linux & MacOS.
Dal sito web ufficiale,
Affinic Debugger GUI .aka. ADG, è progettato come interfaccia utente grafica per vari debugger. Questa build è specificatamente destinata a GDB, il debugger GNU. Con le finestre grafiche, ADG può liberare tutta la potenza dei debugger visualizzando più tipi di informazioni allinterno di una vista e manovrare i debugger con un semplice clic. ADG fornisce anche un terminale di comando integrato per consentire agli utenti di inserire direttamente il comando del debugger. ADG è disponibile su Linux / Windows / Mac OS X.
Risposta
VisualStudio.Code ( VS.Code ) gira su Linux e ha unestensione “Native Debug” che ti consente di usare gdb. Ha uninterfaccia utente molto reattiva. È estremamente leggero sulle risorse. Lesperienza si avvicina in qualche modo a Visual Studio su Windows per sviluppatori C ++ (non esiste tuttavia una vista assembly). Le scorciatoie di debug principali sono le stesse predefinite (F5, Shift-F5, F10, F11).
Linstallazione avviene in due clic (uno per installare VS.Code, laltro per installare lestensione), ottimo per chi proviene da Windows Visual Studio e cerca di essere subito produttivo.
Risposta
Cè “s Voltron , che è uninterfaccia utente estensibile del debugger Python che supporta LLDB, GDB, VDB e WinDbg / CDB (tramite PyKD) e funziona su macOS, Linux e Windows. Per i primi tre supporta x86, x86_64 e arm con supporto anche arm64 per lldb mentre aggiunge anche il supporto powerpc per gdb.
Lautore ha anche scritto un plugin Binary Ninja per integrare Voltron – https://github.com/snare/binjatron , che consente le visualizzazioni sincronizzate.
Risposta
Tieni presente che quanto segue si applica solo al debug del codice sorgente.
CLion
è un IDE
che utilizza gdb
. Hai ancora la possibilità di digitare i comandi, ma molte funzionalità sono implementate senza problemi nella GUI come lo stepping, la visualizzazione delle variabili attualmente attive e limpostazione di breakpoints
. Ulteriori informazioni here
.
Risposta
Puoi utilizzare GDBFrontend . Questo è un frontend GDB molto hackerabile.
Divulgazione completa: io sono lo sviluppatore.