Naučení příkazů GDB je na mém seznamu kbelíku, ale mezitím existuje grafický debugger pro platformy * nix, který přijímá Windbg příkazy a má podobné funkce? Například schopnost vyvolat více upravitelných oken paměti, automaticky se během kroku rozebírat kolem oblasti, nastavit chuť demontáže a mít okno s registry, které mají upravitelné hodnoty?
Komentáře
- @AshRj ach, vidím, co tím myslíš teď. Moje chyba, omlouvám se.
- Voltron je zcela nová, ale zdá se být slibná (zatím jsem to netestoval).
- V SO: stackoverflow.com/questions/79023/…
Odpověď
Založil jsem vlastní frontend gdb s názvem gdbgui , což je server (v pythonu), který vám umožní přístup k plnohodnotnému frontendu ve vašem prohlížeči .
Instalace
pip install gdbgui --upgrade
nebo stáhnout na gdbgui.com
Funguje na všech platformách (Linux, macOS a Windows) a prohlížečích s JavaScriptem.
Spustit
Stačí do svého terminálu zadat
gdbgui
a vy Prohlížeč r otevře novou kartu.
Funkce
- nastavit / odstranit zarážky
- zobrazit zdrojový kód s volitelným vloženým strojovým kódem
- vybrat aktuální snímek v zásobníku
- projít zdrojovým kódem nebo strojovým kódem
- vytvořit / prozkoumat proměnné
- zobrazit / vybrat vlákna
- prozkoumat paměť
- zobrazit registry
- plnou funkčnost terminálu gdb, abyste mohli odesílat tradiční příkazy gdb a prohlížení výstupu programu gdb / inferior
- rozložení inspirované úžasným debuggerem Chrome
- kompatibilním s RR od Mozilly, pro zpětné ladění
Komentáře
- Toto je opravdu dobrá práce. Design se dostává k jádru průměrného případu použití. Líbí se mi to. Podporuje také vzdálené ladění (nebo spíše podporuje použití příkazu
target remote host:port
gdb. Pěkně hotovo. Možná by bylo hezké přidat přidání možnosti připojení ke vzdálenému hostiteli v nabídce. -on. Bylo by možné zmenšit ‚ velikost registru? Všechny informace jsou k dispozici, ale (alespoň na ARM) můžete ‚ nevidíte všechny registry najednou, takže musíte rolovat. - Zde uvedené komentáře nejsou pro individuální
gdbgui
podporu. Otevřete prosím nový zeptejte se na sx nebo použijte gdbgui kanály podpory / sledování chyb.
Odpovědět
Ačkoli někteří lidé ne “ Při péči o jeho rozhraní stojí za zmínku, že GDB má také vlastní vestavěné grafické uživatelské rozhraní (tzv. TUI).
GDB můžete spustit v grafickém režimu pomocí příkazu: gdb -tui
Rychlý odkaz na příkazy TUI naleznete zde: http://beej.us/guide/bggdb/#qref
Odpověď
Obvykle jsem jako rozhraní GDB používal Emacs GUD.
Není příliš těžké jej použít, umožňuje vizuálně nastavit zarážky (nebo přes okno GDB, pokud chcete).
Má několik různých pohledů, ke kterým máte přístup z nabídky GDB nejvyšší úrovně:
Umožňuje také jemnosti, jako je umožnění kontrolovat hodnoty, když na ně najedete myší:
Abyste jej mohli použít, musíte nejprve přejít na složku vašeho binárního souboru s C-x C-f
, pak M-x gdb
(To „s“ Alt + X
“ a poté zadáte „gdb
„). Poté můžete zadat příkazový řádek gdb nebo jednoduše stisknout [Enter]
a přijmout jeho výchozí nastavení. Odtud do okna gdb jednoduše napíšete „start“ s parametry, které chcete předat laděnému programu.
Poté jste do značné míry zlatí, ale pouze s jedním pohledem. Nabídky v horní části obrazovky pod položkou „GUD“ vám umožní otevřít další relevantní zobrazení pro cokoli, co se pokoušíte ladit.(Rámečky jsou samostatná okna a „Windows“ jsou okna v rámci.)
Ve výchozím nastavení je obvykle při spuštění programu nastaven bod zlomu a poté můžete buď procházet kód pomocí tlačítek v horní části okno, nebo pokud nemáte žádný kód, můžete svůj pohled přizpůsobit tak, aby vám umožnil provést demontáž binárního souboru, na který se díváte.
Tlačítka v horní části okna obklopená „{} „jsou pro krokování na úrovni kódu a tlačítka s ikonou„ <> „jsou pro ladění na úrovni instrukcí. Pravděpodobně se tedy budete chtít soustředit na levou stranu, pokud provádíte normální ladění kódu, a více se zaměřovat na pravou stranu, pokud se dostáváte do opravdové drsnosti.
Také, pokud se někdy ztratíte, tato ikona:
Je to celá kniha, která pravděpodobně zodpoví vaše otázky. Jediný případ, kdy v Emacsu nebude existovat, je, pokud jste na Debianu (Ubuntu je v pořádku) a nainstalovali jste Emacs ze svých repozitářů. V takovém případě budete muset nainstalovat „emacs<vesrsion>-common-non-dfsg
“ k získání příruček. („<version>
“ jsou desítkové číslice vrácené M-x version
v Emacsu)
Komentáře
- Toto je Spacemacs a ne GNU Emacs, že?
- Ne. Toto je prosté ‚ ol GNU Emacs, právě jsem vytvořil můj styl tak, aby vypadal takto. Nic, co jsem zmínil výše, není specifické pro moji konfiguraci. (A ve skutečnosti je Spacemacs jen sada konfigurací Emacs, ale nemám ponětí, jestli to nějak změní použití GDB)
- To ‚ není skladem Emacs. Jaký operační systém a balíčky používáte?
- Vypadá to, že máte nainstalovaný balíček Power Line další věci. emacswiki.org/emacs/PowerLine
- @mrbean This on Linux Mint and jo, I think my Emacs topic v roce 2013 byl base16-zítra s PowerLine (pěkné rozpoznávání btw!)
odpověď
Můj názor je trochu zaujatý, ale pro ladění assembleru je nejlepším „frontendem“ GDB venku IDA (podporuje komunikaci se vzdálenými cíli GDB). Pro ladění zdrojového kódu bych však doporučil KDBG.
Komentáře
- Ve skutečnosti bych doporučil použít IDA ‚ s
linux_server
přes vzdálené GDB je ‚ s schopnější a rychlejší (protože používá binární protokol a ne textový) ). - Zdůvodněte prosím své doporučení. Odpovědi nejsou psány pouze pro OP, ale pro všechny ostatní lidi, kteří se s tím v budoucnu mohou setkat.
- V zásadě proto, že máte veškerou sílu IDA (pluginy, skriptování IDAPython, známé GUI,. ..) a není to jen rozhraní pro GDB.
Odpověď
I s rizikem závažného downvotingu „Chtěl bych se postavit na stranu obyčejné staré gdb
výzvy a doporučit proti rozhraní GUI. Začal jsem se učit pokročilejšímu používání GDB čtením Umění ladění před několika lety. Popisuje GDB a DDD a také Eclipse jako rozhraní GDB.
Je pravda, že většinu času používám Vim jako své IDE na terminál a tmux
(dříve screen
s byobu
). Proto přepínám mezi panely můj terminál multiplexer pro rychlé přepínání mezi kódem a debuggerem. Výzva GDB – po několika týdnech zkoušení TUI – má inde Upravil jsem vše, co jsem kdy požadoval, a měli byste mít na paměti, že se můžete připojit několikrát ke stejnému procesu (a podívat se tak na paměť tak, jak ji popisujete).
Zdá se, že všechna rozhraní zaostávají trochu – žádné překvapení – a dává větší smysl vyrovnat se s výzvou GDB a jejími jemnostmi a zvláštnostmi. Mějte na paměti, že na nastavení z holého kovu to může být jediná věc, kterou máte. Proto má smysl se to naučit, i když najdete „slušné“ grafické uživatelské rozhraní podle svých vlastních standardů.
Novější verze GDB budou také podporovat skriptování v Pythonu a díky tomu poskytují velmi výkonnou sadu nástrojů pro ladění, dokonce jen z příkazového řádku.
Pokud absolutně trváte na použití rozhraní GUI, doporučil bych také IDA Pro z jednoduchého důvodu, že vám poskytuje jeden frontend pro různé debuggery a musíte naučit se (nebo přizpůsobit) jeho zkratky pouze jednou. Nevýhody: cena a flexibilita, když nemáte licenci na konkrétním počítači nebo nemáte možnost tunelovat na server GDB atd …
Nevím o žádném rozhraní GDB který přijímá příkazy WinDbg. A mohu jen znovu zdůraznit: stejně budete sklízet plody času investovaného do učení se vanilkové GDB. Nevyhýbejte se námaze. Ve WinDbg je spousta věcí, které jsou specifické pro způsob, jakým Windows funguje, funguje jádro Windows a tak dále. GDB je mnohem obecnější.
Odpověď
Chtěl bych navrhnout DDD .
Pokud máte zdrojový kód, měli byste si prohlédnout QTCreator . Jeho debugger je podobný Visual Studio, pokud ho znáte.
Komentáře
- I ‚ použil jsem
DDD
a nebyl ‚ fanoušek. I ‚ se ale podívám na QtCreator, díky! - DDD je skvělé pro zobrazení datových struktur, můžete je rozložit na desku (lehká tabulka druhů ). Proto data-display-debugger.
- DDD vypadá na první pohled divně a zastarale, ale ‚ je opravdu silný.
Odpověď
Ne GUI, ale dobrá náhrada, jakmile si na to zvyknete (a osobně si myslím, že je to u většiny věcí rychlejší ) -> https://github.com/gdbinit/Gdbinit .
Vzpomněl jsem si, když jsem začal * nix couvat a měl jsem čelit gdb poprvé. Nenáviděl jsem to a + mamon original gdbinit mi zachránil den. V dnešní době upřednostňuji gdb před většinou debuggerů GUI.
Zkuste to 🙂
Úplné zveřejnění: Jsem autorem nástroje.
Komentáře
- Měli byste napsat, že Gdbinit je software, který ‚ znovu udržujete …
- Tak? Je ‚ zdarma, k dispozici komukoli. Zrovna se tu nepokouším něco prodat. Geez …!
- @ fg – To může být reklama, která není založena na zkušenostech, ale pouze na tom, že jste tento nástroj napsali.
- Takže můžete ‚ Inzerujete své užitečné nástroje, které řeší problémy, a musíte čekat, až to ostatní udělají? To ‚ je opravdu podivný způsob myšlení pro řešení problémů “ komunity „.
- @ fG- přečtěte si často kladené dotazy: reverseengineering.stackexchange.com/faq#promotion
Odpověď
DDD se mi moc nelíbí, je to tak 90 „GUI.
Chtěl bych rád doporučuji KDBG, což je rozhraní KDE pro gdb. Kromě toho se možná budete chtít podívat na Cgdb, což je rozšíření pro kletby pro gdb.
V poslední době jsem narazil na Nemiver , vypadá opravdu slibně.
Komentáře
- Funguje KDBG dobře i při demontáži a ladění bez zdroje? Jejich snímky obrazovky ukazovaly pouze zdrojový kód.
- Nevím ‚ nevím, nikdy jsem to nezkoušel …
- “ to ‚ s tak 90 ‚ s v něm ‚ s GUI “ … více jako 80 ‚ s
- Je vzhled GUI jedinou nevýhodou?
Odpověď
cgdb je také skvělá volba, pokud používáte Vim.
cgdb sdílí s vimem mnoho příkazů, například regexové vyhledávání a mnoho dalších. Z domovské stránky cgdb:
Rozhraní klávesnice je modelováno podle vim, takže uživatelé vim by se měli pomocí cgdb cítit jako doma.
odpověď
Při kódování atd. Obvykle používám Vim + gdb v režimu CLI atd. Někdy je ale použito grafické uživatelské rozhraní výhodnější.
Jednou z dalších možností, kromě výše zmíněných, je Code :: Blocks. Jako back-end používá GDB a CDB. U GDB můžete k demontáži vybrat AT & T, Intel nebo custom . Podporuje smíšený režim i seznam čistých pokynů. Můžete jej dále nastavit tak, aby vyhodnocoval proměnné (v kódu) pod kurzorem atd.
Existuje pouze jedno okno s výpisem paměti, ale do m můžete také zadat raw příkazy GDB > Příkazový řádek dole, který se vytiskne do okna – tedy např výpisy paměti.
Má samostatné okno pro registry CPU, nelze je přímo upravovat, ale hodnoty můžete nastavit pomocí zmíněného příkazového řádku, stejně jako další hodnoty:
set $eax = 123 set var xyz = "q"
Obrázek níže to ukazuje v akci s laděním zdroje na KVM (Otevřít odkaz pro jeho zobrazení ve větším formátu).
Jedním problémem, který jsem s ním měl, jsou některé chyby grafického uživatelského rozhraní atd., když jej spustím na Ubuntu 12 – UB 12 má verzi 10.10. Kompilace a instalace aktuálního vydání , 12.11, však byla bezbolestná.
Např. pro vlastní instalační cestu install (Pokud vaše distribuce nemá aktuální verzi a chcete mít obě):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
Odpověď
Tento článek Dr. Dobbse podrobně zobrazuje GUI pro ladění v operačním systému Linux. Doporučuji Qt-Creator s názvem GDB debug založený na prostředí Linuxu.Článek každopádně kontroluje pouze ladění kódu C ++, ale to stačí k předvedení funkcí ladění GDB.
Odpověď
Doporučím UltraGDB , což je rozhraní GDB GUI a odlehčené IDE založené na technologii Eclipse.
Odpovědět
K dispozici je Affnic Debugger GUI . Není to zdarma, ale existuje lite verze. Je k dispozici pro Windows, Linux & MacOS.
Z oficiálního webu,
Affinic Debugger GUI .aka. ADG, je navrženo jako grafické uživatelské rozhraní pro různé debuggery. Toto sestavení je konkrétně zaměřeno na GDB, GNU debugger. S grafickými okny může ADG uvolnit plný výkon debuggerů zobrazením více typy informací v jednom pohledu a manévrování debuggerů se snadným kliknutím. ADG také poskytuje integrovaný příkazový terminál pro přímé zadávání příkazů debuggeru. ADG je k dispozici pro systémy Linux / Windows / Mac OS X.
Odpověď
VisualStudio.Code ( VS.Code ) běží na Linuxu a má rozšíření „Native Debug“, které vám umožní používat gdb. Má velmi responzivní uživatelské rozhraní. Je extrémně lehký na zdroje. Zkušenost se trochu přibližuje Visual Studio ve Windows pro vývojáře v C ++ (není zde však žádný pohled na sestavení). Hlavní klávesové zkratky pro ladění jsou po vybalení stejné (F5, Shift-F5, F10, F11).
Instalace probíhá dvěma kliknutími (jedním k instalaci VS.Code, druhým k instalaci rozšíření), což je skvělé pro někoho, kdo přichází z Windows Visual Studio a hledá okamžitou produktivitu.
Odpověď
Existuje Voltron , což je rozšiřitelné uživatelské rozhraní debuggeru Pythonu, které podporuje LLDB, GDB, VDB a WinDbg / CDB (přes PyKD) a běží na systémech macOS, Linux a Windows. U prvních tří podporuje x86, x86_64 a arm s rovnoměrnou podporou arm64 pro lldb, zatímco přidává rovnoměrnou podporu powerpc pro gdb.
Autor také napsal plugin Binary Ninja pro integraci Voltronu – https://github.com/snare/binjatron – který umožňuje synchronizovaná zobrazení.
Odpovědět
Upozorňujeme, že následující platí pouze pro ladění zdrojového kódu.
CLion
je IDE
používající gdb
. Stále máte možnost psát příkazy, ale mnoho funkcí je bezproblémově implementováno v grafickém uživatelském rozhraní, například krokování, prohlížení aktuálně aktivních proměnných a nastavení breakpoints
. Přečtěte si více here
.
Odpovědět
Můžete použít GDBFrontend . Toto je velmi hacknutelné rozhraní GDB.
Úplné zveřejnění: Jsem vývojář.