リモートデバッグ用のCLion



Clion Remote Debugging



CLionはC / C ++プロジェクトの開発に使用できるJetBrainsIDEファミリーバケット製品の1つであり、GDBはC / C ++プログラムのデバッグに使用できます。

デバッガーとして、GDBはプログラム開発者に強力なデバッグ機能を提供しますが、デバッグ操作を実行するためのコマンドが必要であり、あまり便利ではありません。 (GDBの使用については、「GDBデバッグ」の記事を参照してください。)この目的のために、CLionは、プログラム開発者がデバッグを容易にするためのグラフィカルなデバッグインターフェイスを提供します。さらに、CLionはリモートデバッグ機能も提供します。実際のプロジェクトでは、コードがローカル開発環境で記述されているのに、プログラムがリモートマシンで実行されているという状況に遭遇することがよくあります。リモートデバッグは私たちにとって非常に必要です。



この記事では、CLionをリモートデバッグに使用する方法について説明します。

環境への備え
ローカル開発環境がWindowsオペレーティングシステムであると仮定すると、プログラムのリモート実行環境はCentOSオペレーティングシステムです。リモートデバッグに対応するには、CentOSに必要なソフトウェアをインストールする必要があります。インストールされているソフトウェアは次のとおりです。



cmake
gcc
gdb
gdbserver
インストールコマンドは次のとおりです。

yum install cmake -y
yum install gcc-c ++ -y
yum install gdb -y
yum install gdb-gdbserver -y


cmakeは、コンパイルプロセスを管理し、Makefileを生成するために使用されます。gcc-c++はコンパイラです。gdbはデバッグツールです。プログラムのデバッグ機能は実際にはgdbによって提供されます。gdbserverは、リモートホスト接続を許可する特定のATCPポートをリッスンするために使用されます。リモートデバッグ。

ローカル開発環境については、最新バージョンのCLionがWindowsオペレーティングシステムにインストールされています。たとえば、CLionの現在のバージョンは2018.3です。



コードの同期
CLionを使用してC ++プロジェクトhelloworldを作成します。次に、メニューの[ツール]-[展開]-[構成]を開いて、リモートホストと、ローカルディレクトリとリモートディレクトリ間のマッピングを構成します。


プロジェクトフォルダを右クリックし、[展開]-[10.88.115.114にアップロード]を選択して、プロジェクトのソースコードを10.88.115.114ホストにアップロードします。

上記では、リモートホストとローカルホストのディレクトリマッピングを構成したため、アップロード操作を実行した後、ソースコードが上記で構成されたディレクトリにアップロードされていることがわかります。

コードのコンパイル
CLionはデフォルトのソースコードmain.cppを生成し、main.cppを変更し、デバッグを容易にするためにadd関数を追加しました。

#include using namespace std int add(int a, int b) { int sum = a + b return sum } int main() { std::cout << 'Hello, World!' << std::endl int sum = 0 sum = add(5, 3) std:cout << 'sum of 5 and 3 is ' << sum << std::endl return 0 }


main.cppソースコードを変更した後、コードをリモートマシンに再アップロードする必要があります。

CLionによって生成されるCMakeLists.txtは次のとおりです。 C ++ 98標準を使用して、生成された実行可能ファイルの名前はhelloworldです。

project(helloworld) set(CMAKE_CXX_STANDARD 98) add_executable(helloworld main.cpp)


上記の10.88.115.114ホストにソースコードをアップロードしたので、10.88.115.114ディレクトリ/ home / lihao / code / cpp / helloに移動し、次の手順を実行します。

$ cd /home/lihao/code/cpp/hello $ mkdir build $ cd build $ cmake .. -DCMAKE_BUILD_TYPE=Debug $ make


cmakeコマンドを実行すると、Makefileが生成され、-DCMAKE_BUILD_TYPE = Debugを指定してgdbデバッグをサポートします。

makeコマンドを実行すると、実行可能ファイルがビルドディレクトリhelloworldにコンパイルされます。

リモートデバッグ
上記の手順の後、リモートデバッグを実装できます。

リモートホストでコマンドの実行を続行します。

gdbserver :1234 /home/lihao/code/cpp/hello/build/helloworld


gdbserverリスニングポート1234を指定し、出力:

Process /home/lihao/code/cpp/hello/build/helloworld created pid = 12496 Listening on port 1234

ローカルCLionに戻り、リモートデバッグ情報を構成し、GDBリモートデバッグ構成を追加します。

次に、次の構成情報を入力します。

ブレークポイントを設定し、デバッグボタンを押すと、プログラムが実行され、割り込みがブレークポイントにあることがわかります。変数値を確認できます。

helloworldプログラムは、ローカルホストではなく、リモートホストで実行されることに注意してください。 CLionは、デバッグコマンドをgdbserverに送信することにより、リモートホスト上のgdbを制御します。

参考資料
https://www.suninf.net/2018/07/clion-remote-debug.html
CLionの毎日のヒント