
☕ GDBFrontendは、簡単で柔軟で拡張可能なGUIデバッガです。

GDBFrontendは、簡単で柔軟、かつ拡張可能なGUIデバッガです。

GDBFrontendは pip でインストールできます。
sudo python3 -m pip install gdbfrontend
既にインストール済みでアップグレードする場合
sudo python3 -m pip install --upgrade gdbfrontend
特定のGITスナップショットをインストールしたい場合:
sudo python3 setup.py install
そして、次のコマンドで実行できます
gdbfrontend
最新のソースをダウンロードして実行できます。
gdb-frontendは以下のコマンドで実行できます:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
そして、次のURLで開けます:
http://127.0.0.1:5550/
GDBシェルは以下のコマンドで開けます:
tmux a -t gdb-frontend
ArchベースのディストリビューションではArch Linuxパッケージをインストールできます。(AURパッケージ)
yay -S gdb-frontend-bin
そして、次のコマンドで実行できます:
gdbfrontend
FlatpakパッケージはTODOです。
このチュートリアルに従って、GDBFrontendでDocker化されたC/C++アプリをデバッグする方法を学びます。
このクイックチュートリアルに従って、GDBFrontendで組み込みデバイスをデバッグします。
このクイックチュートリアルに従って、GDBFrontendでネイティブなC Python拡張をデバッグします。
GDBFrontendには強力で拡張可能なAPIがあります。このクイックチュートリアルに従って、GDBFrontendプラグインの開発を学びます。
このクイックチュートリアルに従って、特別な開発・デバッグ要件のための統合アイデアを学びます。
このチュートリアルに従って、OpenOCDとGDBFrontendでSTM32をデバッグします。
GDBFrontendには式評価器があり、同時に複数使用できます。



ブレークポイントを右クリックして条件を設定します。


すべての変数、メンバー、アイテムの式は、GDBFrontendのVariablesExplorerで接続されています。

プロセスマネージャーでプロセスを監視、フィルタリング、管理できます。


GDBFrontendには「強化されたコラボレーション」と呼ばれるコラボレーション機能がいくつか用意されています。

強化されたコラボレーションを有効にすると、コラボレーション描画が利用可能になります。描画するには「描画」をクリックするか、Ctrl + Shift + X ショートカットを使用します。Ctrl + Shift + C ですべての描画をクリアします。

強化されたコラボレーションにより、すべてのデバッガクライアントがソース表示で同期されます。

GDBFrontendは非常に拡張性が高く、強力なAPIを備えています。GDBFrontendの拡張性の例をいくつか示します。


./gdbfrontend$ gdbfrontend --help
GDBFrontendは、簡単、柔軟、拡張可能なGUIデバッガです。
オプション:
--help, -h: このヘルプメッセージを表示します。
--version, -v: バージョンを表示します。
--gdb-args="ARGS", -G "ARGS": GDBのコマンドライン引数を指定します。(オプション)
--gdb-executable=PATH, -g PATH: GDB実行ファイルのパスを指定します。(デフォルトはPATH環境変数の"gdb"コマンド)
--tmux-executable=PATH, -tmux PATH: tmux実行ファイルのパスを指定します。(デフォルトはPATH環境変数の"tmux"コマンド)
--terminal-id=NAME, -t NAME: tmuxターミナル識別子の名前を指定します。(デフォルトは"gdb-frontend")
--credentials=USER:PASS, -c USER:PASS: デバッガにアクセスするためのユーザー名とパスワードを指定します。
--host=IP, -H IP: HTTPサーバーとWSサーバーにアクセス可能な現在のホストアドレスを指定します。
--listen=IP, -l IP: HTTPサーバーとWSサーバーの待受アドレスを指定します。
--port=PORT, -p PORT: HTTPポートを指定します。(0はランダムポート)
--url-base=PATH, -u PATH: URLベースパスを指定します。(デフォルト: /)
--readonly, -r: コードエディタを読み取り専用にします。(注意: このオプションはセキュリティには関係ありません)
--workdir, -w: 作業ディレクトリを指定します。
--plugin-dir, -P: プラグインディレクトリを指定します。
--dontopenuionstartup, -D: 起動直後にUIを開かないようにします。
--verbose, -V: 詳細な出力を有効にします。
--help, -hヘルプテキストを表示します。
--version, -vバージョンを表示します。
--gdb-args="ARGS", -G "ARGS"GDBのコマンドライン引数を指定します。(オプション)
--gdb-executable=PATH, -g PATHgdbfrontend --gdb-executable=/path/to/gdbのようにGDB実行ファイルのパスを指定できます。(オプション)
--tmux-executable=PATH, -tmux PATHgdbfrontend --tmux-executable=/path/to/tmuxのようにtmux実行ファイルのパスを指定できます。(オプション)
--terminal-id=PATH, -t PATHgdbfrontend --terminal-id=terminal-nameのようにtmuxターミナルIDを指定できます。(デフォルト: gdb-frontend)
--credentials=USER:PASS, -c USER:PASSデバッガにアクセスするためのユーザー名とパスワードを指定します。
--host=IP, -H IPHTTPサーバーとWSサーバーにアクセス可能な現在のホストアドレスを指定します。
--listen=IP, -l IPHTTPサーバーとWSサーバーの待受アドレスを指定します。
--port=PORT, -p PORTHTTPポートを指定します。(0はランダムポート)
--url-base=PATH, -u PATHURLベースパスを指定します。(デフォルト: /)
--readonly, -rコードエディタを読み取り専用にします。(注意: このオプションはセキュリティには関係ありません)
--workdir, -w作業ディレクトリを指定します。
--plugin-dir, -Pプラグインディレクトリを指定します。
--dontopenuionstartup, -D起動直後にUIを開かないようにします。
--verbose, -V詳細な出力を有効にします。
GDBFrontendのGDBコマンドは gf- で始まります。
gf-refreshすべてのブラウザクライアントをリフレッシュします。
gf-theme [テーマ名]希望するテーマに切り替えます。例: gf-theme light、gf-theme red、またはデフォルトテーマの場合は gf-theme default。
gf-list-pluginsプラグインディレクトリ内のすべてのGDBFrontendプラグインを一覧表示します。
gf-load-plugin [プラグイン名]GDBFrontendプラグインをロードします。
gf-unload-plugin [プラグイン名]GDBFrontendプラグインをアンロードします。
現在のホットキーは以下の通りです。
GDBFrontendには組み込みテーマがあります。
テーマを切り替えるには、GDBシェルで gf-theme [テーマ名] コマンドを使用します。
(gdb) gf-theme doki
(gdb) gf-theme sky
(gdb) gf-theme sakura
(gdb) gf-theme waifu
(gdb) gf-theme cyberpunk
(gdb) gf-theme dark
(gdb) gf-theme green
(gdb) gf-theme light
(gdb) gf-theme red
デフォルトのテーマに戻すには:
(gdb) gf-theme
また、プラグイン開発チュートリアルも参照してください。
GDBFrontendのPython APIには gdbfrontend モジュールを介してアクセスできます。
(gdb) python-interactive
>>> dir(gdbfrontend)
例えば、すべてのクライアントソケットを次のように取得できます:
>>> gdbfrontend.api.globalvars.httpServer.ws_clients
{1: <server.GDBFrontendSocket object at 0x...>}
または、すべてのプラグインを取得できます:
>>> gdbfrontend.plugin.getAll()
['hello', 'theme_cyberpunk', 'theme_dark', 'theme_doki', 'theme_green', 'theme_light', 'theme_red', 'theme_sakura', 'theme_sky', 'theme_waifu']
デバッガセッションにHTTP認証を追加するには、--credentials=USER:PASS オプションを使用できます。
GDBFrontendは主にChromium系ブラウザでテストしながら開発されています。他のブラウザ、特にFirefoxでも正常に動作しますが、他のブラウザで問題が発生した場合は、バグレポートを送信してください。
GDBFrontendのほとんどの関数はスレッドセーフであり、GDBのメインスレッドで動作します。そのため、GDBシェルでブロッキングする何かを実行すると、GDBFrontendの関数はそれが完了するまで待機する必要があります。
スレッドセーフなGDBFrontend関数が動作する必要があるときに、GDBのメインスレッドをブロックしていると、次の警告が表示されます。
(gdb) shell
$ ...

シェルを終了すると、ブロックされていたGDBFrontend関数は動作を続行します。
注: GDBシェルで何も実行していないのにこの警告が表示されることがあります。それは(GDBのイベントループ内で)何かが長時間かかっていることを意味します。この場合はこの警告を無視してください。
GDBFrontendはサブプロセス、アプリケーション、およびそのサブプロセスにSIGTERMを送信します。アプリケーションが新しいプロセスをフォークしてそのPGIDを設定している場合、GDBFrontendはそれらを閉じられない可能性があります。その場合は、プロセスにSIGKILLを送信する必要があります。
pkill -f gdb
非常に深い深さで展開された変数/メンバーを持つ式評価器を使用している場合、ポインタの可視化でスクロールや評価器ウィンドウの移動パフォーマンスが悪影響を受ける可能性があります。その場合は、その評価器ウィンドウのsignalとslotのポインティングをオフにできます。

実際のところ、gdb-frontendはWindowsでも実行可能ですが、Windows版GDBに深刻な問題があり、Windowsでgdb-frontendを使用することは避けられています。もちろん、Windows 10を使用している場合はWSL上でgdb-frontendを使用できます。
gdb-frontendはWSL (Windows Subsystem for Linux) で使用できます。
/proc/net/tcp インターフェースがWSLで機能しないため、ランダムポートオプションは使用できません。(WSL 2ではこの問題はありません。)v0.2.0-beta以降、GDBFrontendは新しいバージョニング戦略に切り替えました。
vX.Y.Z-STABILITY において:
X はメジャーバージョンで、長期的な変更、主要な機能と機能強化が含まれます。Y はメインバージョンで、新しい機能と機能強化が含まれます。Z はメインバージョンのバグ修正リリースです。STABILITY はリリースの安定度レベルです。(alpha、beta、rcN、stable)ドキュメントはまだTODOです。
APIドキュメントはまだTODOです。
プラグイン開発チュートリアルを読むことができます。
テーマはプラグインとして開発されます。
Discordコミュニティに参加してください。
プロジェクトへのコミットやプラグインの開発により貢献できます。すべてのコミットを歓迎します。
| 通貨 | アドレス |
|---|---|
| BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
| ETH / USDT / USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
| XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
できればUSDTまたはUSDCの寄付をお勧めしますが、上記の通貨のいずれでも寄付できます。🥳
Copyright (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
GNU General Public License v3 (GPL-3)
ソフトウェアのコピー、配布、および変更は、ソースファイルの変更日を追跡する限り許可されます。GPLライセンスのコードの変更またはソフトウェア(コンパイラ経由を含む)は、ビルドおよびインストール手順とともにGPLの下で利用可能にしなければなりません。
| アクション | ホットキー | コンテキスト |
|---|
| 一般: ソースファイルを開く | Ctrl + O | GDBFrontend |
| 一般: 新しい式評価器を開く | Ctrl + R | GDBFrontend |
| 一般: 新しい式評価器をネイティブウィンドウで開く | Ctrl + Shift + R | GDBFrontend |
| 一般: ファジーソースファインダー | Ctrl + P | GDBFrontend |
| 実行: 実行 | F5 | GDBFrontend |
| 実行: 続行 | F6 | GDBFrontend |
| 実行: 一時停止/中断 | F7 | GDBFrontend |
| 実行: ステップオーバー | F8 | GDBFrontend |
| 実行: ステップイン | F9 | GDBFrontend |
| 実行: ステップ命令 | F10 | GDBFrontend |
| 実行: 停止 | F11 | GDBFrontend |
| 強化されたコラボレーション: 描画モードの切り替え | Ctrl + Shift + X | GDBFrontend / 強化されたコラボレーション: 有効 |
| 強化されたコラボレーション: すべての描画をクリア | Ctrl + Shift + C | GDBFrontend / 強化されたコラボレーション: 有効 |