CLion 2019.3ヘルプ

GDB リモートデバッグ

GDB リモートデバッグ構成は、の一つで二つのオプション CLionはgdbserverを下にリモートデバッグを提供します。デバッグ情報を含む実行可能ファイルが既にあり、プロジェクトをビルドするためにCLionを必要としない場合、この構成を使用します。この構成は、特定のビルドシステムまたはプロジェクト形式に依存しません。

この構成により、任意のビルドシステムでビルドされたアプリケーションをリモートでデバッグできます。唯一の要件は、デバッグシンボルがローカルマシンに存在することです。

ターゲット環境にも制限はありません。プログラムは、Linuxベースの組み込みシステム(Raspbian OS(英語)など)、クラウドプラットフォーム、またはDockerコンテナーなどのOS上のgdbserverの下でリモートで実行できます。リモート gdbserverプロトコルに準拠する任意のGDBスタブに接続できます。たとえば、Qemu(英語)はOSカーネルをデバッグし、OpenOCD(英語)はフラッシュされたファームウェアをデバッグします。

デフォルトでは、クライアントのデバッガとして使用されているCLionのバンドルGDBは、リモートクロスプラットフォームのさまざまなLinux / Windowsの/ macOSでのデバッグおよび組み込み例に適していますmultiarch支援、で構築されています。以下に、サポートされているすべてのターゲットの完全なリストがあります。

バンドルされたGDBでサポートされているリモートターゲット

  • i686-pc-mingw32 i686-w64-mingw32 x86_64-w64-mingw32 i686-linux-gnu x86_64-linux-gnu aarch64-linux-gnu alpha-linux-gnu arm-linux-gnu arm-linux-gnueabi arm-linux-gnueabihf hppa-linux-gnu ia64-linux-gnu m68k-linux-gnu m68k-rtems mips-linux-gnu mipsel-linux-gnu mips64-linux-gnu mips64el-linux-gnu powerpc-linux-gnu powerpc-linux-gnuspe

ワークフローの一般的な手順

リモート GDBデバッグのために実行する手順の簡単な説明を以下に示します。各ステップの詳細については、次の章で説明します。

  1. デバッグ情報を含むバイナリを準備します。必要に応じて、クロスプラットフォームツールチェーンを使用します。

  2. リモートマシンにバイナリを配置し、ローカルマシンにシンボルファイルを配置してください。

    通常、デバッグ実行可能ファイル自体はシンボルファイルとして機能しますが、これは別のファイルでもかまいません。

  3. CLionで、GDB リモートデバッグ構成を作成します。指定する設定は、リモートセッション中にデバッガーがブレークポイントで停止できるようにするために重要です。そのため、設定の構成を再確認することをお勧めします。

  4. 起動 リモートマシン上のgdbserverの下のプログラム。

  5. CLionに戻り、ステップ3で作成した構成のデバッグを開始します。

GDB リモートデバッグ構成を作成する

  1. 実行 | 構成の編集に移動して icons general addをクリックし、テンプレートのリストからGDB リモートデバッグを選択します。

  2. Remote Run/Debug Configuration

    次の設定を指定します。

    • 'target remote' 引数

      このフィールドで、リモートシステムへの接続を提供します。IPアドレスの後にポート番号(この例のように)または接続の詳細が別の形式(英語)で続きます。

    • シンボルファイル

      これは、デバッグシンボルを含むファイルへのローカルマシンパスです。これは、ターゲットで実行されている実行可能ファイルのストリップされていないコピー、またはデバッグ情報のみを含むELF(英語)ファイルです。

      GDBクライアントの最近のバージョンは、gdbserverから自動的にシンボルを転送できるため、ターゲットで実行されている実行可能ファイルがストリップされていないバイナリの場合、このフィールドを空のままにしておくこともできます。

    • パス・マッピング

      このペインを使用して、ホスト上のローカルパス(ローカル列)にマップされるターゲットマシン上のパス(リモート列)を提供します。

    • Sysroot

      Sysroot は、ローカルシステム上のデバッグシンボルを使用してターゲットライブラリのコピーにアクセスするためにGDBクライアントによって使用されます(ブレークポイントを設定し、ライブラリコードでソース行を見つけるため)。

      GDBの最新バージョンのほとんどは、ファイルを自動的にダウンロードできるため、このフィールドを指定する必要はありません。ただし、自動ダウンロードによりデバッグプロセスが大幅に遅くなる可能性があることに注意してください。

      ライブラリをデフォルト以外のローカルディレクトリに手動でコピーすることを選択し、GDBで使用する場合は、このフィールドにパスを設定します。

gdbserverでプログラムをリモートで起動する

  1. gdbserverの下のターゲットでアプリケーションを起動するには、リモートターミナルを使用するか、CLionの組み込みSSH ターミナルを呼び出します(ツール | SSH セッションの開始を実行して資格情報を提供します)。

    2つの引数を指定してgdbserverを実行します。

    • デバイス名(シリアル回線接続の場合)またはポート番号付きのTCPホスト名(以下の例では:1234 )。

    • デバッグする実行可能ファイルのパスとファイル名、およびプログラム入力引数(ある場合)。

    remote ssh terminal
  2. Gdbserverは、エントリポイントでプログラムを中断し、クライアントデバッガーが接続するのを待ちます。

リモートデバッグセッションを開始する

  1. CLionでは、設定/環境設定 | ビルド、実行、デプロイ | ツールチェーンデバッガーフィールドでGDBが選択されていることを確認してください。

    プラットフォームと選択したツールチェーンに応じて、次のオプションから選択します。バンドルされたGDB、WSL GDB、Cygwin GDB、またはカスタムGDB。

  2. 必要に応じて、コードにブレークポイントを配置し、新しく作成されたGDB リモートデバッグ構成のデバッグ icons actions startDebugger セッションを開始します。

  3. CLionのデバッガーは、実行中のリモートプロセスに接続します。ターミナルにホストからのリモートデバッグメッセージが表示されます。また、デバッガーが接続されました。メッセージのデバッガコンソールを確認することもできます。

  4. これで、ローカルで実行されているかのようにコードをインスペクションできます(たとえば、変数ステップスルーして通常どおりにインスペクションします )。

    debug via gds/gdbserver

共有ライブラリをデバッグする

  • 共有ライブラリをデバッグするには、ローカルマシンの ~/.gdbinit スクリプトでsolib-search-paths(英語)変数を設定する必要があります。スクリプトにアクセスして編集する方法については、.gdbinit / .lldbinit構成ファイルの使用を参照してください。

    ただし、デフォルトでは、このコマンドは、デバッガーの起動時にリモートターゲットにアタッチする前に実行されます(対応する課題(英語)を参照)。これの回避策として、GDBフック(英語)を使用できます。

    define target hookpost-remote set solib-search-path /path/to/my.so:/path/to/sysroot:/path/to/vendorlibs break main # if you also need the debug sessions to pause at the beginning end

    このように、GDBはリモートターゲットが接続されるたびにフックで指定された set solib-search-path を実行します。

最終更新日: 2020年2月20日

関連ページ:

リモート GDB / gdbserverによるデバッグ

GDB / gdbserverを介したリモートデバッグは、ターゲットでのビルドが高価または利用できない場合に特に役立ちます。ターゲットにバイナリを配置してgdbserverで起動した後、CLionから接続して、プログラムのように完全なIDEデバッグエクスペリエンスを取得できます。ローカルで実行されて...

Docker

Dockerを使用すると、開発者は本番環境と同じ環境でコードをテストするためにコンテナー内にアプリケーションをデプロイできます。CLionはDockerプラグインを使用してDockerをサポートします。プラグインはバンドルされており、デフォルトで有効になっています。DockerプラグインはCLion...

WSL

WSL(WSL 2)-Windows Subsystem for Linux-Windows 10でLinuxバイナリ実行可能ファイルをネイティブに実行するための互換性レイヤーです。現在、Ubuntu、OpenSUSE、SLESなどのいくつかのLinuxディストリビューションをサポートしています。W...

クイックチュートリアル: WindowsでCLionを設定する

Windowsでは、CLionを設定するには、環境を設定する必要があります。Cygwin、MinGW、WSL、またはMSVCです。システムに複数の環境をインストールして、それぞれに個別のCLionツールチェーンを作成することができます。ツールチェーンの決定的な要素として、環境にはCおよびC++コンパ...

中断したプログラムを調べる

デバッガーセッションが開始されると、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。ブレークポイントにヒット、手動でプログラムを一時停止する、その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりで...

デバッガー・オプション

CLionは、すべてのプラットフォームでGDB(バンドルまたはカスタム)およびmacOSおよびLinuxでバンドルされたLLDBを使用したC/C++実行可能ファイルのデバッグをサポートします。また、WindowsにはMSVCツールチェーン用の実験的なLLDBベースのデバッガーがあります。バンドルされ...