
seer snap-latest
Seer - GDB の GUI フロントエンド
はじめに
Seer - Linux向けgdbのGUIフロントエンドです。(Ernie Pasveer [email protected])
このプロジェクトは活発に開発が進められています。目標は、gdbへのシンプルでありながら使いやすいGUIを提供することです。
バグや機能要望は、私のメールアドレスまで報告するか、GitHubプロジェクトページにタスクを作成してください。
インストール
============
Seerは、パッケージマネージャーまたはソースコードからインストールできます。
[!NOTE] インストール前に要件が満たされていることを確認してください。
要件
-
Linux
-
C++17
-
"mi"インタプリタを備えたgdb(
gdb --interpreter=miを実行して確認してください) -
CMake(3.5.0以降)
-
QT6
- ソースコードからSeerをビルドする場合、お使いのディストリビューションにQT6の「devel」パッケージがインストールされている必要があります。
- Core
- Gui
- Widgets
- PrintSupport
- Charts
- Svg
- Qt6のビルド手順はこちら: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
- ソースコードからSeerをビルドする場合、お使いのディストリビューションにQT6の「devel」パッケージがインストールされている必要があります。
-
QT5
- SeerはQt5ではコンパイルできなくなりました。 2.3ソースツリーがQt5でコンパイルできる最後のバージョンです。
- Qt5のビルド手順はこちら: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
パッケージからのインストール
以下のパッケージマネージャーから利用できます:
Pamac (Manjaro)
$ pamac install seer
zypper (openSUSE Tumbleweed)
$ zypper install seergdb
Flathub
Flathubウェブサイト。こちら
$ flatpak install flathub io.github.epasveer.seer
Flatpak
ベータ版のSeer。Seerのリリースページ(GitHub上)。
重要: GDB Launcherでgdbを実行するには、flatpak-spawn --hostが必要です。https://github.com/epasveer/seer/issues/377#issuecomment-3620844808 を参照してください。
seer.flatpakをダウンロードして、インストールします:
$ flatpak install -y --bundle --user seer.flatpak
Snap
ベータ版のSeer。Seerのリリースページ(GitHub上)。
$ snap install seergdb_<version>.snap --dangerous
ソースコードからのインストール
(推奨)Seerは、以下の手順に従ってQt6でビルドできます。
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
当面は、以下の手順に従ってQt5でもビルドできます。
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
ニュース
====
GitHub上のSeerのWikiページをチェックしてください。
- バージョンv1.17が最後のQt5リリースになります。
- 次のリリースはv2.0で、Qt6ベースになります。ただし、当面はQt5でもコンパイル可能です。
- 最新の安定版Qt5ソースが必要な場合は、こちらからv1.17を入手してください: https://github.com/epasveer/seer/releases/tag/v1.17
Seerの起動
=============
Seerは、コマンドラインからデバッグするプログラムを簡単に起動できるように設計されています。gdbにはプログラムをデバッグするための複数の方法があります。Seerも同様に複数の方法をサポートしています。
Seerの実行方法のすべてについては、Wikiを参照してください。
https://github.com/epasveer/seer/wiki/Starting-Seer
GUI概要
============
Seerのさまざまなビューとダイアログの例です。
メインビュー
Seerのメインビューは次のようになります:

-
ソース/関数/型/変数/ライブラリ
- プログラムで使用されたソース/ヘッダーファイルのリスト。
- 関数、型、静的変数の検索。 ダブルクリックするとソースファイルが開きます。
- プログラムによって参照される共有ライブラリのリスト。
- ソース/ヘッダーファイルのリストは検索できます。これにより、表示されるファイルのリストが「縮小」されます。
- ファイルをダブルクリックすると、コードマネージャーで開きます。
-
変数/レジスタ情報
- 変数とレジスタの値を表示します。
- 「ロガー」 - 変数の値を記録します。手動で入力するか、コードマネージャーで開いているファイル内の変数をダブルクリックします。
- 「トラッカー」 - gdbが停止ポイント(ステップ、ネクスト、フィニッシュなど)に到達するたびに値を表示する変数のリストを作成します。停止ポイントに到達すると、リスト内のすべての変数が潜在的な新しい値を表示します。
- 「レジスタ」 - すべてのCPUレジスタの値を表示します。
-
コードマネージャー。
- Seer GUIの中央部分の大きな領域です。
- このビューでソースファイルが開かれます。
- ファイル内のテキストは^Fで検索できます。
- 変数名をダブルクリックすると、変数を「ロガー」に追加できます。 CTRLキーを押しながらダブルクリックすると、変数の前に「」が付加されます。 SHIFTキーを押しながらダブルクリックすると、変数の前に「&」が付加されます。 CTRL+SHIFTキーを押しながらダブルクリックすると、変数の前に「&」が付加されます。
- 変数名を選択してRMBをクリックし、「Add variable to Tracker」を選択すると、変数を「トラッカー」に追加できます。
- 変数名を選択してRMBをクリックし、「Add variable to Memory Visualizer」を選択すると、変数を「メモリビジュアライザー」に追加できます。
- 特定の行でRMBをクリックすると、ブレークポイント/プリントポイントを作成できます。
- 特定の行でRMBをクリックすると、その行まで実行できます。
- このビューのタブは、タブをダブルクリックすると切り離すことができます。
-
ブレークポイント、ウォッチポイント、キャッチポイント、プリントポイント、手動gdbコマンド、およびログ。
- コードマネージャーの下の領域です。
- 手動コマンド。 gdbまたはgdbmiコマンドを手動で入力します。 コマンドは次回のSeer使用時に記憶されます。
- ブレークポイントマネージャー。ブレークポイントの作成と管理を行います。
- ウォッチポイントマネージャー。ウォッチポイントの作成と管理を行います。 ウォッチポイントは、変数がアクセスされたとき(読み取り、書き込み、読み取り/書き込み)を監視します。
- キャッチポイントマネージャー。キャッチポイントの作成と管理を行います。 キャッチポイントは、C++のthrow/rethrow/catch呼び出しで実行を停止します。
- プリントポイントマネージャー。プリントポイントの作成と管理を行います。 プリントポイントはブレークポイントに似ていますが、そのプリントポイントで変数を出力できます。gdbの'dprintf'呼び出しを参照してください。
- GDB出力。 gdbプログラム自体からの出力のログです。
- Seer出力。 Seerプログラム自体からの出力のログです。診断用です。
- このビューのタブは、タブをダブルクリックすると切り離すことができます。
-
スタックフレーム情報。
- スタックフレームリスト。フレームをダブルクリックすると、スコープ(現在の関数)を変更できます。
- スタックフレーム引数。各フレームについて、各関数に渡された引数を出力します。
- スタックローカル変数。現在の関数について、ローカル変数の値を出力します。
-
スレッド情報。
- スレッドID。すべてのスレッドのリスト。スレッドIDをダブルクリックすると、スコープ(現在のスレッド)を変更できます。
- スレッドフレーム。各スレッドについて、そのスタックフレームをリストします。
-
gdbのリバースデバッグモードをサポート。
- 命令記録のオン/オフを切り替えます。
- 再生方向を前方または後方に設定します。
オープンダイアログ
実行可能ファイルのオープンダイアログを起動すると、次のようになります:

Seerコンソール
実行可能ファイルからのすべてのテキスト出力はSeerコンソールに送られます。実行可能ファイルへのテキスト入力もコンソールから行えます。

アセンブリビュー
通常、Seerはソースコードをコードマネージャーのタブとして表示します。プログラムのアセンブリもタブとして表示できます。
「View->Assembly View」を選択すると、実行中の現在のアセンブリを表示する追加のタブがソースコードタブと並んで表示されます。以下に例を示します。

ソースコードタブと同様に、アセンブリタブでもブレークポイントを設定できます。現在の命令がハイライト表示されます。
「Breakpoints」タブと「Stack frames」タブのエントリをダブルクリックすると、それらのアドレスのアセンブリが表示されます。
設定で定義されている「Nexti」と「Stepi」のホットキーがあります。通常は「Ctrl+F5」と「CTRL+F6」です。 アセンブリタブで「^F」を使用すると、強力な検索バーが表示されます。
Seerのアセンブリ機能は新しいものです。変更や機能の提案を歓迎します。
メモリビジュアライザー
メモリビジュアライザーで生のメモリの内容を表示すると、次のようになります:
| メモリ | 逆アセンブル |
|---|---|
![]() | ![]() |
配列ビジュアライザー
配列ビジュアライザーで配列の内容を表示すると、次のようになります:
| 通常 | スプライン | 散布図 |
|---|---|---|
![]() | ![]() | ![]() |
2つの配列をX-Yプロットとして使用できます。たとえば、この単純な'points'配列は図形のX-Y輪郭を形成します。
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
| X値 | Y値 | XY値 |
|---|---|---|
![]() | ![]() | ![]() |
構造体ビジュアライザー
構造体ビジュアライザーでC/C++構造体またはC++クラスの内容を表示すると、次のようになります。 この例は、Seerが現在いるC++クラスの「*this」の内容を示しています。基本型であるすべての構造体メンバーは編集できます。

より軽量な基本構造体ビジュアライザーもありますが、ポインタを追跡できず、編集もできません。
画像ビジュアライザー
画像である生のメモリの内容を表示する場合、画像ビジュアライザーを使用できます。

サポート/連絡先
===============
バグや機能要望については、[email protected] までメールを送信してください。または、GitHubプロジェクトページにタスクを作成してください。
スターゲイザー
==========
素晴らしい世界です。







