Învățarea comenzilor GDB se află pe lista mea de bucket, dar între timp există un depanator grafic pentru platformele * nix care acceptă comenzi Windbg și are funcționalități similare? De exemplu, posibilitatea de a scoate mai multe ferestre de memorie editabile, de a dezasambla automat în jurul unei zone în timp ce pășești, de a seta aroma de dezasamblare și de a avea o fereastră cu registre care au valori editabile?
Comentarii
- @AshRj ah, văd la ce te referi acum. Greșeala mea, scuze.
- Voltron este complet nou, dar pare a fi promițător (nu l-am testat încă).
- Pe SO: stackoverflow.com/questions/79023/…
Răspuns
Am început propriul meu frontend gdb numit gdbgui care este un server (în python) care vă permite să accesați un frontend cu funcții complete în browserul dvs. .
Instalare
pip install gdbgui --upgrade
sau descărcați de la gdbgui.com
Funcționează pe toate platformele (Linux, macOS și Windows) și browserele cu JavaScript.
Rulați
Tastați doar
gdbgui
în terminal și dvs. browserul r va deschide o filă nouă.
Caracteristici
- setați / eliminați punctele de întrerupere
- vizualizați codul sursă, cu codul opțional al mașinii în linie
- selectați cadrul actual din stivă
- treceți prin codul sursă sau codul mașinii
- creați / explorați variabile
- vizualizați / selectați fire
- explorați memoria
- vizualizați registrele
- funcționalitate completă a terminalului gdb, astfel încât să puteți trimite comenzi tradiționale gdb și vizualizați ieșirea programului gdb / inferior
- aspect inspirat de uimitorul depanator Chrome
- compatibil cu RR-ul Mozilla, pentru depanare inversă
Comentarii
- Este o lucrare bună, cu adevărat. Designul ajunge la miezul cazului de utilizare mediu. Imi place. De asemenea, acceptă depanarea la distanță (sau, mai degrabă, acceptă utilizarea comenzii gdb
target remote host:port
. Frumos. Poate că adăugarea posibilității de conectare la o gazdă la distanță în meniu ar fi o adăugare bună -on. Ar fi posibil să reduceți dimensiunea ‘ registre`? Toate informațiile sunt disponibile, dar (cel puțin pe ARM) puteți ‘ nu vedeți toate registrele simultan, deci trebuie să derulați. - Comentariile de aici nu sunt destinate asistenței individuale
gdbgui
. Vă rugăm să deschideți un nou întrebare pe sx sau utilizați canalele de asistență gdbgui / urmărirea erorilor.
Răspuns
Deși unii oameni nu ” Având grijă de interfața sa, merită menționat faptul că GDB are și propriul său GUI încorporat (numit TUI).
Puteți porni GDB în modul GUI cu comanda: gdb -tui
O referință rapidă la comenzile TUI poate fi găsită aici: http://beej.us/guide/bggdb/#qref
Răspuns
În general am folosit Emacs GUD ca frontend GDB.
Nu este prea greu de utilizat, vă permite să setați puncte de întrerupere vizual (sau dacă doriți fereastra GDB).
Are mai multe vizualizări diferite pe care le puteți accesa dintr-un meniu GDB de nivel superior:
Permite, de asemenea, frumusețe, cum ar fi să vă permiteți să inspectați valorile trecând peste ele:
Pentru a-l utiliza, trebuie mai întâi să navigați la dosarul binarului dvs. cu C-x C-f
, apoi M-x gdb
(Acel „s” Alt + X
” , apoi tastați „gdb
„). După ce faceți acest lucru, puteți tasta o linie de comandă gdb sau pur și simplu apăsați [Enter]
pentru a accepta implicit. De acolo, tastați „start” în fereastra gdb cu parametrii pe care doriți să îi treceți la programul pe care îl depanați.
După aceea, sunteți aproape auriu, dar cu o singură vizualizare. Meniurile din partea de sus a ecranului sub „GUD” vă vor permite să deschideți alte vizualizări relevante pentru orice încercați să depanați.(Cadrele sunt ferestre separate, iar „Windows” sunt ferestre încadrate)
De obicei, în mod implicit, un punct de întrerupere este setat la pornirea programului și puteți naviga prin cod folosind butoanele din partea de sus a fereastra sau, dacă nu aveți cod, vă puteți personaliza vizualizarea pentru a vă permite să parcurgeți dezasamblarea binarului pe care îl urmăriți.
Butoanele din partea de sus a ferestrei înconjurate de „{} „sunt pentru pas la nivel de cod, iar butoanele cu„ <> „în pictograma lor sunt pentru depanare la nivel de instrucțiuni. Deci, probabil că veți dori să vă concentrați pe stânga dacă faceți depanare normală a codului și să vă concentrați mai mult pe dreapta dacă intrați în adevăratul nitty-gritty.
De asemenea, dacă vă pierdeți vreodată, această pictogramă:
Este un întreagă carte care probabil îți poate răspunde la întrebări. Singura dată când nu va exista în Emacs este dacă sunteți pe Debian (Ubuntu este bine) și ați instalat Emacs din repozitele sale. În acest caz va trebui să instalați „emacs<vesrsion>-common-non-dfsg
” pentru a obține manualele. (Cu „<version>
” fiind cifre non-zecimale returnate de M-x version
în Emacs)
Comentarii
- Acesta este Spacemacs și nu GNU Emacs, nu?
- Nu. Este simplu ‘ ol GNU Emacs, pur și simplu am stilul meu să arate așa. Nimic despre care am menționat mai sus nu este specific configurației mele. (Și, de fapt, Spacemacs este doar un set de configurări Emacs, dar nu am nicio idee dacă schimbă utilizarea GDB)
- Că ‘ nu este stoc Emacs. Ce sistem de operare și pachete rulați?
- Se pare că aveți pachetul Power Line instalat printre alte lucruri. emacswiki.org/emacs/PowerLine
- @mrbean Aceasta pe Linux Mint și da, cred că tema mea Emacs în 2013 a fost baza16-mâine cu PowerLine (Bună recunoaștere!)
Răspuns
Parerea mea este puțin părtinitor, dar, pentru asamblarea de depanare, cel mai bun „frontend” GDB existent este IDA (acceptă comunicarea cu ținte GDB la distanță). Totuși, pentru depanarea codului sursă, aș recomanda KDBG.
Comentarii
- De fapt, aș recomanda utilizarea IDA ‘ s
linux_server
peste GDB la distanță, este ‘ mai capabil și mai rapid (deoarece folosește protocol binar și nu unul bazat pe text ). - Vă rugăm să vă justificați recomandarea. Răspunsurile sunt scrise nu doar pentru PO, ci pentru toți ceilalți oameni care ar putea întâlni acest lucru în viitor.
- Practic pentru că aveți toată puterea IDA (pluginuri, scripturi IDAPython, GUI cunoscut,. ..) și nu este doar un frontend pentru GDB.
Răspuns
Chiar și cu riscul de vot negativ sever , Aș dori să fac parte din promptul vechi gdb
și recomand împotriva unui frontend GUI. Am început să învăț o utilizare mai avansată a GDB citind Arta de depanare acum câțiva ani. Acesta descrie GDB și DDD, precum și Eclipse ca frontenduri către GDB.
Desigur, de cele mai multe ori folosesc Vim ca IDE pe terminal și tmux
(anterior screen
cu byobu
). Prin urmare, comut între panouri în multiplexorul meu terminal să treacă rapid între cod și depanator. Solicitarea GDB – după câteva săptămâni de încercare a TUI – are inde Am editat tot ce mi-am dorit vreodată și ar trebui să rețineți că vă puteți atașa de mai multe ori la același proces (aruncând astfel o privire asupra memoriei așa cum o descrieți).
Se pare că toate frontend-urile rămân în urmă puțin – fără surpriză – și are mai mult sens să ne împăcăm cu promptul GDB și cu frumusețile și ciudățeniile sale. Rețineți că, pe o configurație metalică, poate fi singurul lucru pe care îl aveți. Astfel, este logic să îl învățați chiar dacă găsiți o interfață grafică „decentă” după propriile standarde.
Versiunile mai noi ale GDB vor accepta, de asemenea, scripturi Python și prin aceasta oferă un set foarte puternic de instrumente pentru depanare, chiar și doar din linia de comandă.
Dacă insistați în mod absolut să utilizați un frontend GUI, aș recomanda, de asemenea, IDA Pro pentru simplul motiv că vă oferă un singur frontend pentru o varietate de depanatoare și trebuie să aflați (sau personalizați) comenzile rapide o singură dată. Dezavantaje: preț și flexibilitate atunci când nu aveți o licență pe o anumită mașină sau nu aveți nicio modalitate de a face tunel către un server GDB etc …
Nu știu niciun frontend al GDB care acceptă comenzile WinDbg. Și nu pot decât să subliniez din nou: veți culege oricum rodul timpului investit în învățarea vanilie GDB. Nu te feri de efort. Există o mulțime de lucruri în WinDbg care sunt specifice modului în care funcționează Windows, funcționează nucleul Windows și așa mai departe. GDB este mult mai generic.
Răspuns
Aș dori să sugerez DDD .
Dacă „aveți cod sursă, ar trebui să consultați QTCreator . Depanatorul său este similar cu Visual Studio, dacă sunteți familiarizat cu asta.
Comentarii
- I ‘ am folosit
DDD
și nu am fost ‘ ta fan. ‘ voi verifica QtCreator totuși, mulțumesc! - DDD este excelent pentru afișarea structurilor de date, le puteți așeza pe o placă (un fel de masă ușoară) ). Prin urmare, data-display-debugger.
- DDD pare ciudat și depășit la prima vedere, dar ‘ este foarte puternic.
Răspuns
Nu GUI, ci un bun înlocuitor odată ce te obișnuiești cu el (și personal cred că este mai rapid pentru majoritatea lucrurilor ) -> https://github.com/gdbinit/Gdbinit .
Mi-am amintit când am început * nix inversarea și am avut să mă confrunt cu gdb pentru prima dată. Urât și gdbinit + mammon original „mi-a salvat ziua. În aceste zile prefer gdb decât majoritatea depanatoarelor GUI.
Încercați 🙂
Dezvăluire completă: sunt autorul instrumentului.
Comentarii
- Ar trebui să scrieți o divulgare a faptului că Gdbinit este un software pe care ‘ îl mențineți …
- Asa de? Este ‘ gratuit, disponibil oricui. Nu încerc tocmai să vând ceva aici. Doamne!!
- @ fg- Totuși, ar putea fi unele reclame care nu se bazează pe experiență, ci doar pe faptul că ai scris acel instrument.
- Deci poți ‘ nu faceți publicitate instrumentelor dvs. utile care rezolvă probleme și trebuie să așteptați ca alții să o facă? ‘ este un mod de gândire cu adevărat ciudat pentru un rezolvator de probleme ” comunitate „.
- @ fG- vă rugăm să citiți întrebările frecvente: reverseengineering.stackexchange.com/faq#promotion
Răspuns
Nu-mi place DDD-ul, este atât de 90 „în GUI-ul său.
Aș vrea îmi place să recomand KDBG, care este un frontend KDE către gdb. În plus, s-ar putea să doriți să aruncați o privire la Cgdb, care este o extensie blestemată pentru gdb.
În ultima vreme am întâlnit Nemiver , pare foarte promițător.
Comentarii
- Funcționează bine KDBG pentru demontare și depanare și fără sursă? Capturile de ecran ale acestora arătau doar codul sursă.
- Nu știu, nu l-am încercat niciodată …
- ” este ‘ deci 90 ‘ este în el ‘ s GUI ” … mai mult ca 80 ‘ s
- Este aspectul GUI singurul dezavantaj?
Răspuns
cgdb este, de asemenea, o opțiune excelentă dacă utilizați Vim.
cgdb împarte o mulțime de comenzi cu vim, cum ar fi căutarea regex și multe altele. Din pagina principală cgdb:
Interfața tastaturii este modelată după vim, astfel încât utilizatorii vim ar trebui să se simtă ca acasă folosind cgdb.
Răspuns
De obicei folosesc Vim + gdb în modul CLI atunci când codifică etc. Dar uneori o GUI este preferabil.
O altă opțiune, în afară de cele menționate, este Code :: Blocks. Folosește GDB și CDB ca back-end. Pentru GDB puteți selecta AT & T, Intel sau custom pentru dezasamblare. Suportă modul mixt, precum și listarea instrucțiunilor pure. Îl puteți configura în continuare pentru a evalua variabilele (în cod) sub cursor etc.
Există o singură fereastră de memorie, dar puteți introduce în plus comenzi GDB brute în Linie de comandă în partea de jos, care este tipărită în fereastră – deci, de ex dumpuri de memorie.
Are o fereastră separată pentru registrele CPU, acestea nu sunt direct editabile, dar puteți seta valori prin linia de comandă menționată, precum și alte valori:
set $eax = 123 set var xyz = "q"
Imaginea de mai jos o arată în acțiune cu depanare sursă pe un KVM (Deschideți linkul pentru a-l vizualiza în format mai mare).
O problemă pe care am avut-o cu aceasta este câteva bug-uri GUI etc. când îl rulez pe Ubuntu 12 – UB 12 are versiunea 10.10. Dar o compilare și instalare a versiunii actuale , 12.11, a fost nedureroasă.
De ex. pentru instalarea personalizată a căii de instalare (dacă distribuția dvs. nu are versiunea actualizată și doriți să aveți ambele):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
Răspuns
Acest articol Dr Dobbs prezintă detaliat GUI pentru depanare pe sistemul de operare Linux. Recomand Qt-Creator numit debug GDB bazat pe mediul Linux.Oricum, articolul examinează numai codul C ++ de depanare, dar acest lucru este suficient pentru a arăta caracteristicile de depanare GDB-uri.
Răspuns
Vă recomand UltraGDB , care este frontend GDI GUI și IDE ușor bazat pe tehnologia Eclipse.
Răspuns
Există Affnic Debugger GUI . Nu este gratuit, dar există o versiune simplificată. Este disponibil pentru Windows, Linux & MacOS.
De pe site-ul oficial,
Affinic Debugger GUI .aka. ADG, este conceput ca o interfață grafică de utilizator pentru diverse depanatoare. Această versiune este direcționată în mod special pe GDB, depanatorul GNU. Cu ferestrele grafice, ADG poate dezlănțui întreaga putere a depanatorilor vizualizând mai multe tipuri de informații într-o singură vizualizare și manevrarea depanatorilor cu clic ușor. ADG oferă, de asemenea, un terminal de comandă integrat pentru ca utilizatorii să introducă direct comanda de depanare. ADG este disponibil pe Linux / Windows / Mac OS X.
Răspuns
VisualStudio.Code ( VS.Code ) rulează pe Linux și are o extensie „Native Debug” care vă permite să utilizați gdb. Are o interfață de utilizare foarte receptivă. Este extrem de ușor în ceea ce privește resursele. Experiența se apropie într-o oarecare măsură de Visual Studio pe Windows pentru dezvoltatorii C ++ (totuși nu există nicio vizualizare de asamblare). Comenzile rapide de depanare principale sunt aceleași de la început (F5, Shift-F5, F10, F11).
Instalarea este cu două clicuri (unul pentru a instala VS.Code, celălalt pentru a instala extensia), excelent pentru cineva care vine din Windows Visual Studio și care dorește să fie productiv imediat.
Răspuns
Există „s Voltron , care este un UI extensibil de depanare Python care acceptă LLDB, GDB, VDB , și WinDbg / CDB (prin PyKD) și rulează pe macOS, Linux și Windows. Pentru primele trei suportă x86, x86_64 și arm cu suport arm64 uniform pentru lldb, adăugând în același timp și suport powerpc pentru gdb.
Autorul a scris și un plugin Binary Ninja pentru a integra Voltron – https://github.com/snare/binjatron – care permite vizualizări sincronizate.
Răspuns
Rețineți că următoarele se aplică numai pentru depanarea codului sursă.
CLion
este un IDE
utilizând gdb
. Aveți în continuare capacitatea de a introduce comenzi, dar multe caracteristici sunt implementate fără probleme în interfața grafică, cum ar fi pasul, vizualizarea variabilelor active în prezent și setarea breakpoints
. Citiți mai multe here
.
Răspundeți
Puteți utiliza GDBFrontend . Acesta este un frontend GDB foarte hackabil.
Dezvăluire completă: eu sunt dezvoltatorul.