GDBFrontend は、簡単、柔軟、拡張可能な GUI デバッガーです。オンラインで試してみましょう!
pip
を使用して GDBFrontend をインストールできます。
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
次のようにして開くことができます:
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 で接続されます。
Process Manager を使用してプロセスを監視、フィルタリング、または管理できます。
GDBFrontend には、「拡張コラボレーション」と呼ばれる、コラボレーションのためのいくつかの機能のセットがあります。
コラボ抽選は、拡張コラボを有効にすると利用できます。クリックして描画するか、 Ctrl + Shift + Xショートカットを使用して描画し、 Ctrl + Shift + C を使用してすべての描画を消去します。
拡張コラボレーションでは、すべてのデバッガー クライアントがソース表示時に同期されます。
GDBFrontend は拡張性が高く、強力な API を備えています。 GDBFrontend の拡張性の例をいくつか示します。
./gdbfrontend
$ gdbfrontend --help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:
--help, -h: Shows this help message.
--version, -v: Shows version.
--gdb-args= " ARGS " , -G " ARGS " : Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATH: Specifies GDB executable path (Default is " gdb " command on PATH environment variable.)
--tmux-executable=PATH, -tmux PATH: Specifies Tmux executable path (Default is " tmux " command on PATH environment variable.)
--terminal-id=NAME, -t NAME: Specifies tmux terminal identifier name (Default is " gdb-frontend " .)
--credentials=USER:PASS, -c USER:PASS: Specifies username and password for accessing to debugger.
--host=IP, -H IP: Specifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
--port=PORT, -p PORT: Specifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATH: Specifies URL base path. (Default: /)
--readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
--workdir, -w: Specifies working directory.
--plugin-dir, -P: Specifies plugins directory.
--dontopenuionstartup, -D: Avoids opening UI just after startup.
--verbose, -V: Enables verbose output.
--help
、 -h
ヘルプテキストを表示します。
--version
、 -v
バージョンを表示します。
--gdb-args="ARGS", -G "ARGS"
GDB コマンドライン引数を指定します。 (オプション)
--gdb-executable=PATH
、 -g PATH
gdbfrontend --gdb-executable=/path/to/gdb
のように、GDB 実行可能パスを指定できます。 (オプション)
--tmux-executable=PATH
、 -tmux PATH
gdbfrontend --tmux-executable=/path/to/tmux
のように Tmux 実行可能パスを指定できます。 (オプション)
--terminal-id=PATH
、 -t PATH
gdbfrontend --terminal-id=terminal-name
のように Tmux ターミナル ID を指定できます。 (デフォルト: 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
詳細な出力を有効にします。
GDBFrontend の GDB コマンドはgf-
で始まります。
gf-refresh
すべてのブラウザクライアントを更新します。
gf-theme [theme-name]
希望のテーマに切り替えます。例: デフォルトのテーマの場合は、 gf-theme light
、 gf-theme red
、またはgf-theme default
。
gf-list-plugins
プラグイン ディレクトリ内のすべての GDBFrontend プラグインを一覧表示します。
gf-load-plugin [plugin-name]
GDBFrontend プラグインをロードします。
gf-unload-plugin [plugin-name]
GDBFrontend プラグインをアンロードします。
現在のホットキーは以下のとおりです。
アクション | ホットキー | コンテクスト |
---|---|---|
一般:ソース ファイルを開く | Ctrl + O | GDBフロントエンド |
一般:新しい ExpressionEvaluator | Ctrl + R | GDBフロントエンド |
一般:ネイティブ ウィンドウ上の新しい ExpressionEvaluator | Ctrl + Shift + R | GDBフロントエンド |
一般:ファジーソースファインダー | Ctrl + P | GDBフロントエンド |
ランタイム:実行 | F5 | GDBフロントエンド |
ランタイム:続行 | F6 | GDBフロントエンド |
ランタイム:一時停止/中断 | F7 | GDBフロントエンド |
ランタイム:ステップオーバー | F8 | GDBフロントエンド |
ランタイム:ステップイン | F9 | GDBフロントエンド |
ランタイム:ステップ命令 | F10 | GDBフロントエンド |
ランタイム:停止 | F11 | GDBフロントエンド |
コラボレーションの強化:描画モードの切り替え | Ctrl + Shift + X | GDBフロントエンド / 拡張コラボレーション: 有効 |
強化されたコラボレーション:すべての描画をクリアする | Ctrl + Shift + C | GDBフロントエンド / 拡張コラボレーション: 有効 |
GDBFrontend にはテーマが組み込まれています。
テーマを切り替えるには、GDB シェルでgf-theme [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
モジュールを介して GDBFrontend の Python API にアクセスできます。
(gdb) python-interactive
> >> dir ( gdbfrontend )
たとえば、次のようにしてすべてのクライアント ソケットを取得できます。
> >> gdbfrontend . api . globalvars . httpServer . ws_clients
{ 1 : < server . GDBFrontendSocket object at 0 x ... > }
または、すべてのプラグインを入手することもできます。
> >> gdbfrontend . plugin . getAll ()
[ 'hello' , 'theme_cyberpunk' , 'theme_dark' , 'theme_doki' , 'theme_green' , 'theme_light' , 'theme_red' , 'theme_sakura' , 'theme_sky' , 'theme_waifu' ]
--credentials=USER:PASS
オプションを使用して、デバッガー セッションに HTTP 認証を追加できます。
GDBFrontend は主に Chromium ベースのブラウザでのテストを中心に開発を行っています。他のブラウザ、特に Firefox では正常に動作しますが、他のブラウザで問題が発生した場合は、バグレポートを送信してください。
GDBFrontend 関数のほとんどはスレッドセーフであり、GDB のメインスレッドで動作します。したがって、GDB シェルでブロックしているものを実行すると、GDBFrontend 関数は終了するまで待機する必要があります。
この警告は、スレッドセーフな GDBFrontend 関数が機能する必要があり、GDB のメイン スレッドをブロックしている場合に表示されます。
(gdb) shell
$ ...
シェルを終了すると、GDBFrontend 関数のブロックは引き続き機能します。
注: GDB シェルで何も実行していなくても、この警告が表示されることがあります。これは、(GDB のイベント ループ内で) 何かに時間がかかっていることを意味します。この場合は、この警告を無視してください。
GDBFrontend は、SIGTERM をそのサブプロセス、アプリケーションとそのサブプロセスに送信します。アプリケーションが新しいプロセスをフォークし、その PGID を設定している場合、GDBFrontend はプロセスを閉じない可能性があります。この場合、プロセスに SIGKILL を送信する必要があります。
pkill -f gdb
非常に長い深さの拡張変数/メンバーを含むExpressionEvaluator を使用している場合、スクロールおよび評価ウィンドウの移動パフォーマンスがポインターの視覚化に悪影響を与える可能性があります。この状況では、そのエバリュエーター ウィンドウのシグナルおよびスロットポインティングをオフにすることができます。
実際、gdb-frontend は Windows 上で実行できますが、GDB の Windows バージョンには重大な問題がいくつかあり、Windows 上で gdb-frontend を使用することは避けられます。もちろん、Windows 10 を使用している場合は、WSL で gdb-frontend を使用できます。
WSL (Windows Subsystem for Linux) で gdb-frontend を使用できます。
/proc/net/tcp
インターフェイスが WSL で機能しないため、ランダム ポート オプションは WSL で使用できません。 (WSL 2 にはこの問題はありません。) v0.2.0 ベータ以降、GDBFrontend は新しいバージョン管理戦略に切り替わりました。
vX.YZ-STABILITY
:
X
メジャーバージョンであり、主要な機能と拡張機能によって長期的に変更されます。Y
、新機能と拡張機能を含むメインバージョンです。Z
メインバージョンのバグ修正リリースです。STABILITY
リリースの安定性レベルです。 ( alpha
、 beta
、 rcN
、 stable
) ドキュメントはまだ TODO です。
API ドキュメントはまだ TODO です。
プラグイン開発チュートリアルを読むことができます。
テーマはプラグインとして開発されます。
Discord コミュニティに参加してください。
プロジェクトにコミットしたり、プラグインを開発したりして貢献できます。すべてのコミットを歓迎します。
通貨 | 住所 |
---|---|
BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
ETH / USDT / USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
できれば、USDT または USDC を寄付することをお勧めしますが、上記の通貨のいずれかを寄付することもできます。 ?
著作権 (C) 2019、Oğuzhan Eroticğlu [email protected] (https://oguzhaneroglu.com/)
GNU 一般公衆利用許諾書 v3 (GPL-3)
ソース ファイルの変更/日付を追跡する限り、ソフトウェアをコピー、配布、変更することができます。 GPL ライセンス コードに対する変更、または (コンパイラ経由の) GPL ライセンス コードを含むソフトウェアも、ビルドとインストール手順とともに GPL に基づいて利用可能にする必要があります。