Het leren van de GDB-commandos staat op mijn bucketlist, maar in de tussentijd is er een grafische debugger voor * nix platforms die accepteert Windbg-commandos, en heeft vergelijkbare functionaliteit? Bijvoorbeeld de mogelijkheid om meerdere bewerkbare geheugenvensters tevoorschijn te halen, automatisch te demonteren rond een gebied tijdens het stappen, demontage-smaak in te stellen en een venster te hebben met registers die bewerkbare waarden hebben?
Opmerkingen
- @AshRj ah, ik begrijp wat je nu bedoelt. Mijn fout, excuses.
- Voltron is totaal nieuw, maar lijkt veelbelovend (ik heb het nog niet getest).
- Op SO: stackoverflow.com/questions/79023/…
Answer
Ik begon mijn eigen gdb-frontend genaamd gdbgui wat een server (in python) die je toegang geeft tot een frontend met volledige functionaliteit in je browser .
Installeren
pip install gdbgui --upgrade
of download op gdbgui.com
Werkt op alle platforms (Linux, macOS en Windows) en browsers met JavaScript.
Voer
Typ gewoon
gdbgui
in uw terminal, en u r-browser opent een nieuw tabblad.
Functies
- breekpunten instellen / verwijderen
- broncode bekijken, met optionele inline machinecode
- huidige frame in stapel selecteren
- door broncode of machinecode bladeren
- variabelen maken / verkennen
- discussies bekijken / selecteren
- geheugen verkennen
- registers bekijken
- volledige gdb-terminalfunctionaliteit zodat u kunt verzenden traditionele gdb-commandos, en bekijk gdb / inferieure programma-uitvoer
- lay-out geïnspireerd door de verbluffende Chrome-debugger
- compatibel met Mozillas RR, voor reverse debugging
Reacties
- Dit is echt goed werk. Het ontwerp dringt door tot de kern van de gemiddelde use-case. Ik vind het leuk. Het ondersteunt ook foutopsporing op afstand (of liever, het ondersteunt het gebruik van de
target remote host:port
gdb-opdracht. Goed gedaan. Misschien zou het toevoegen van de mogelijkheid om verbinding te maken met een externe host in het menu een leuke toevoeging zijn -on. Zou het mogelijk zijn om de ‘ registergrootte te verkleinen? Alle informatie is beschikbaar, maar (in ieder geval op ARM) kun je ‘ zie niet alle registers tegelijk, dus je moet scrollen. - De opmerkingen hier zijn niet voor individuele
gdbgui
ondersteuning. Open een nieuwe vraag op sx, of gebruik de gdbgui-ondersteuningskanalen / bugtracker.
Antwoord
Hoewel sommige mensen dat niet doen ” t geeft om zijn interface, het is de moeite waard te vermelden dat GDB ook zijn eigen ingebouwde GUI heeft (TUI genaamd).
Je kunt GDB starten in GUI-modus met het commando: gdb -tui
Een snelle verwijzing naar TUI-opdrachten kan hier worden gevonden: http://beej.us/guide/bggdb/#qref
Answer
Ik heb Emacs GUD over het algemeen gebruikt als een GDB-frontend.
Het is niet zo moeilijk te gebruiken, stelt u in staat om breekpunten visueel in te stellen (of via het GDB-venster als u dat verkiest).
Het heeft meerdere verschillende weergaven die u kunt openen vanuit een GDB-menu op het hoogste niveau:
Het staat ook leuke dingen toe, zoals het toestaan dat u waarden inspecteert door erover heen te bewegen:
Om het te kunnen gebruiken, moet u eerst naar de map van uw binaire bestand met C-x C-f
en vervolgens M-x gdb
(That “s” Alt + X
” en typ vervolgens “gdb
“). Nadat je dit hebt gedaan, kun je een gdb-opdrachtregel typen of gewoon op [Enter]
drukken om de standaardinstelling te accepteren. Van daaruit typ je gewoon “start” in het gdb-venster met alle parameters die je wilt doorgeven aan het programma dat je aan het debuggen bent.
Daarna ben je vrijwel goud waard, maar met slechts één view. Met de menus bovenaan het scherm onder “GUD” kunt u andere relevante weergaven openen voor alles wat u probeert te debuggen.(Frames zijn afzonderlijke vensters en “Windows” zijn in-frame vensters)
Gewoonlijk wordt standaard een onderbrekingspunt ingesteld bij het starten van het programma, en u kunt dan door uw code navigeren met de knoppen bovenaan het venster, of als u geen code heeft, kunt u uw weergave aanpassen zodat u door een demontage van het binaire bestand dat u aan het kijken bent, kunt doorlopen.
De knoppen aan de bovenkant van het venster omgeven door “{} “zijn voor stappen op codeniveau, en de knoppen met” <> “in hun pictogram zijn voor foutopsporing op instructieniveau. Dus je zult je waarschijnlijk aan de linkerkant willen concentreren als je normale code debuggen doet, en meer aan de rechterkant als je in de echte details komt.
En als je ooit verdwaalt, dit pictogram:
Het is een heel boek dat waarschijnlijk uw vragen kan beantwoorden. De enige keer dat het “niet bestaat in Emacs is als je Debian gebruikt (Ubuntu is prima) en Emacs hebt geïnstalleerd vanuit de opslagplaatsen. In dat geval moet je” emacs<vesrsion>-common-non-dfsg
“installeren om de handleidingen te krijgen. (waarbij “<version>
” de niet-decimale cijfers zijn die worden geretourneerd door M-x version
in Emacs)
Reacties
- Dit is Spacemacs en niet GNU Emacs toch?
- Nee. Dit is duidelijk ‘ ol GNU Emacs, ik heb de mijne zo gestileerd dat hij er zo uitziet. Niets dat ik hierboven noemde, is specifiek voor mijn configuratie. (En eigenlijk is Spacemacs ook slechts een set Emacs-configuraties, maar ik heb geen idee of het GDB-gebruik verandert)
- Dat ‘ geen Emacs in voorraad is. Welk besturingssysteem en pakketten gebruik je?
- Het lijkt erop dat je het Power Line-pakket hebt geïnstalleerd andere dingen. emacswiki.org/emacs/PowerLine
- @mrbean Dit op Linux Mint en ja, ik denk dat mijn Emacs-thema in 2013 was base16-tomorrow met PowerLine (mooie herkenning trouwens!)
Answer
Mijn mening is een beetje bevooroordeeld, maar voor het debuggen van assembler, is de beste GDB “frontend” die er is IDA (het ondersteunt communicatie met externe GDB-doelen). Voor foutopsporing in de broncode zou ik echter KDBG aanbevelen.
Opmerkingen
- Ik zou eigenlijk aanraden IDA te gebruiken ‘ s
linux_server
via externe GDB, het ‘ is capabeler en sneller (omdat het een binair protocol gebruikt en geen op tekst gebaseerd protocol ). - Motiveer uw aanbeveling. De antwoorden zijn niet alleen geschreven voor het OP, maar voor alle andere mensen die dit in de toekomst kunnen tegenkomen.
- In feite omdat je alle kracht van IDA hebt (plug-ins, IDAPython-scripting, bekende GUI,. ..) en is niet alleen een frontend voor GDB.
Answer
Zelfs met het risico van ernstige downvoting , Zou ik graag de kant kiezen van de gewone oude gdb
-prompt en een GUI-frontend aanbevelen. Ik begon met het leren van geavanceerder gebruik van GDB door Art of Debugging enkele jaren geleden. Het beschrijft GDB en DDD evenals Eclipse als frontends voor GDB.
Toegegeven, ik gebruik Vim meestal als mijn IDE op de terminal en tmux
(eerder screen
met byobu
). Daarom schakel ik tussen deelvensters in mijn terminalmultiplexer om snel te schakelen tussen code en debugger. De GDB-prompt – na enkele weken proberen van de TUI – heeft inde ed alles wat ik ooit heb gewenst en je moet in gedachten houden dat je meerdere keren aan hetzelfde proces kunt hechten (waardoor je het geheugen kunt bekijken zoals je het beschrijft).
Het lijkt erop dat alle frontends achterlopen een beetje – geen verrassing – en het is logischer om in het reine te komen met de GDB-prompt en zijn aardigheden en eigenaardigheden. Houd er rekening mee dat dit bij een bare-metal opstelling misschien het enige is dat je hebt. Het is dus logisch om het te leren, zelfs als u een “fatsoenlijke” GUI vindt volgens uw eigen normen.
Nieuwere versies van GDB ondersteunen ook Python-scripting en bieden daardoor een zeer krachtige set tools om te debuggen, zelfs alleen vanaf de commandoregel.
Als je absoluut aandringt op het gebruik van een GUI-frontend, zou ik IDA Pro ook aanbevelen om de eenvoudige reden dat het je een enkele frontend geeft voor een verscheidenheid aan debuggers en je moet leer (of pas) de snelkoppelingen slechts één keer aan. Nadelen: prijs en flexibiliteit als je geen licentie hebt op een bepaalde machine of geen manier om naar een GDB-server te tunnelen, enz …
Ik ken geen frontend van GDB die WinDbg-opdrachten accepteert. En ik kan alleen maar benadrukken: je zult sowieso de vruchten plukken van de tijd die je hebt geïnvesteerd in het leren van vanille GDB. Schrik de moeite niet uit de weg. Er zijn veel dingen in WinDbg die specifiek zijn voor de manier waarop Windows werkt, de Windows-kernel enz. GDB is veel algemener.
Antwoord
Ik “zou graag DDD willen voorstellen .
Als u “broncode heeft, moet u QTCreator bekijken. De debugger is vergelijkbaar met die van Visual Studio “s, als u” daarmee bekend bent.
Opmerkingen
- I ‘ hebben
DDD
gebruikt en was niet ‘ een fan. Ik ‘ Ik ga QtCreator bekijken, bedankt! - DDD is geweldig voor het weergeven van datastructuren, je kunt ze neerleggen op een bord (een soort lichttafel ). Vandaar data-display-debugger.
- DDD ziet er op het eerste gezicht raar en verouderd uit, maar het ‘ is echt krachtig.
Answer
Geen GUI maar een goede vervanging als je er eenmaal aan gewend bent (en persoonlijk denk ik dat het voor de meeste dingen sneller is ) -> https://github.com/gdbinit/Gdbinit .
Ik herinnerde me dat ik begon * nix achteruit te rijden en ik had om gdb voor de eerste keer onder ogen te zien. Haatte het en de gdbinit van + mammon original heeft mijn dag gered. Tegenwoordig geef ik de voorkeur aan gdb boven de meeste GUI-debuggers.
Probeer het eens 🙂
Volledige openbaarmaking: ik ben de auteur van de tool.
Opmerkingen
- Je moet een mededeling schrijven dat Gdbinit software is die je ‘ onderhoudt …
- Zo? Het ‘ is gratis, voor iedereen beschikbaar. Ik probeer hier niet echt iets te verkopen. Goh …!
- @ fg- Dat kan nog steeds reclame zijn die niet op ervaring is gebaseerd, maar uitsluitend op het feit dat je die tool hebt geschreven.
- Dus je kunt ‘ Geen reclame maken voor uw handige tools die problemen oplossen en moeten wachten tot anderen het doen? Dat ‘ is een heel rare denkmodus voor een probleemoplosser ” community “.
- @ fG- lees alstublieft de FAQ: reverseengineering.stackexchange.com/faq#promotion
Antwoord
Ik hou niet echt van DDD, het is zo 90 in zijn GUI.
Ik zou graag KDBG aanbevelen, wat een KDE-frontend is voor gdb. Bovendien wil je misschien eens kijken naar Cgdb, een extensie voor vloeken voor gdb.
De laatste tijd kwam ik Nemiver tegen, het ziet er veelbelovend uit.
Opmerkingen
- Werkt KDBG ook goed voor het uit elkaar halen en debuggen zonder broncode? Hun schermafbeeldingen toonden alleen de broncode.
- Ik weet het niet ‘, ik heb het nog nooit eerder geprobeerd …
- ” het ‘ s dus 90 ‘ s erin ‘ s GUI ” … meer zoals 80 ‘ s
- Is het uiterlijk van de GUI het enige nadeel?
Antwoord
cgdb is ook een geweldige optie als je Vim gebruikt.
cgdb deelt veel commandos met vim, zoals regex zoeken en vele anderen. Van de cgdb-startpagina:
De toetsenbordinterface is gemodelleerd naar vim, dus gebruikers van vim moeten zich thuis voelen met cgdb.
Antwoord
Ik gebruik meestal Vim + gdb in CLI-modus bij het coderen etc. Maar soms is een GUI heeft de voorkeur.
Een andere optie, naast de genoemde, is Code :: Blocks. Het gebruikt GDB en CDB als back-end. Voor GDB kunt u AT & T, Intel of custom selecteren voor demontage. Het ondersteunt zowel de gemengde modus als de pure instructielijst. U kunt het verder instellen om variabelen (in code) onder cursor enz. Te evalueren.
Er is slechts één geheugendumpvenster, maar u kunt ook onbewerkte GDB-opdrachten invoeren in Commandoregel onderaan die naar het venster wordt afgedrukt – dus bijv geheugendumps.
Het heeft een apart venster voor CPU-registers, ze zijn niet direct bewerkbaar, maar je kunt waarden instellen via de genoemde opdrachtregel, evenals andere waarden:
set $eax = 123 set var xyz = "q"
Afbeelding hieronder toont het in actie met bronfoutopsporing op een KVM (Open link om het in groter formaat te bekijken).
Een probleem dat ik ermee heb gehad, zijn enkele GUI-bugs enz. wanneer ik het op Ubuntu 12 uitvoer – UB 12 heeft versie 10.10. Maar het compileren en installeren van huidige release , 12.11, was pijnloos.
Bijv. voor aangepaste installatiepad installatie (als uw distributie geen up-to-date versie heeft en u beide wilt hebben):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
Antwoord
Dit Dr. Dobbs-artikel toont in detail GUIs voor foutopsporing op Linux OS. Ik raad de Qt-Creator genaamd GDB debug aan op basis van een Linux-omgeving.Hoe dan ook, het artikel bespreekt alleen het debuggen van C ++ – code, maar dat is genoeg om te pronken met GDBs debugging-functies.
Antwoord
Ik zal aanbevelen UltraGDB , dat is een GDB GUI-frontend en lichtgewicht IDE gebaseerd op Eclipse-technologie.
Antwoord
Er is Affnic Debugger GUI . Het is niet gratis, maar er bestaat een lite-versie. Het is beschikbaar voor Windows, Linux & MacOS.
Van de officiële website,
Affinic Debugger GUI .aka. ADG, is ontworpen als een grafische gebruikersinterface voor verschillende debuggers. Deze build is specifiek gericht op GDB, de GNU-debugger. Met de grafische vensters kan ADG de volledige kracht van debuggers ontketenen door meerdere soorten informatie binnen één weergave en het manoeuvreren van debuggers door eenvoudig te klikken. ADG biedt ook een geïntegreerde opdrachtterminal waarmee gebruikers debuggeropdracht rechtstreeks kunnen invoeren. ADG is beschikbaar op Linux / Windows / Mac OS X.
Answer
VisualStudio.Code ( VS.Code ) draait op Linux en heeft een “Native Debug” -extensie waarmee je gdb kunt gebruiken. Het heeft een zeer responsieve gebruikersinterface. Het is extreem licht op bronnen. De ervaring komt enigszins overeen met Visual Studio op Windows voor C ++ – ontwikkelaars (er is echter geen assembly-weergave). De belangrijkste debug-snelkoppelingen zijn standaard hetzelfde (F5, Shift-F5, F10, F11).
Installatie is twee klikken (één om VS.Code te installeren, de andere om de extensie te installeren), ideaal voor iemand die uit Windows Visual Studio komt en meteen productief wil zijn.
Antwoord
Er is “s Voltron , een uitbreidbare Python debugger UI die LLDB, GDB, VDB ondersteunt , en WinDbg / CDB (via PyKD) en draait op macOS, Linux en Windows. Voor de eerste drie ondersteunt het x86, x86_64 en arm met zelfs arm64-ondersteuning voor lldb, terwijl het zelfs powerpc-ondersteuning voor gdb toevoegt.
De auteur schreef ook een binaire Ninja-plug-in om Voltron te integreren – https://github.com/snare/binjatron – waarmee gesynchroniseerde weergaven mogelijk zijn.
Antwoord
Merk op dat het volgende alleen van toepassing is op foutopsporing in broncode.
CLion
is een IDE
die gdb
gebruikt. Je hebt nog steeds de mogelijkheid om commandos in te typen, maar veel functies zijn naadloos geïmplementeerd in de GUI zoals stepping, het zien van momenteel actieve variabelen en het instellen van breakpoints
. Lees meer here
.
Antwoord
U kunt GDBFrontend gebruiken. Dit is een zeer hackbare GDB-frontend.
Volledige openbaarmaking: ik ben de ontwikkelaar.