Visual Studio 2015 以降,リモートデバッグがサポートされました.
ターゲットの Linux 環境でコンパイルし GDB 上で実行し,その GDB を Visual Studio のデバッガのインタフェイスを使って操作できるようになっています.
新規プロジェクト作成
コードを書く
標準 C/C++ ライブラリに含まれないようなものは,Visual Studio 上は構文エラーとして見えます.
とはいえコードのコンパイルと実行はターゲットの Linux 上で実行されるため,ターゲットの環境で g++ などを叩いてコンパイルできるコードであれば問題ありません.
どうしても気になる人はターゲットシステムからヘッダファイル一式を持ってきて適当なディレクトリに放り込んでプロジェクトプロパティのインクルードディレクトリに追加しておけば良いです.
2017.08.20 追記:
ネットワークドライブや Samba 共有でも可.Visual Studio がヘッダファイルを読み込め,解析できれば構文エラーは消えます.
Visual Studio を使っている以上は IntelliSense の世話になりたいですよね.
なお,よく使われるものについては $(ISenseIncludePath)
に入っています.
$(ISenseIncudePath)
はデフォルトでは以下のような感じです.(Visual Studio のバージョンにより異なります)
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\include\c++\5
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\include\x86_64-linux-gnu\c++\5
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\include\c++\5\backward
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\lib\gcc\x86_64-linux-gnu\5\include
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\local\include
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\lib\gcc\x86_64-linux-gnu\5\include-fixed
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\include\x86_64-linux-gnu
- C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr\include
実行
プロジェクトをビルドし実行します.
そのままではコンソール出力が見えないので,Linux 環境のコンソールを開いておきます.
初めてリモートデバッグを使用する場合は接続先を指定する画面が出ます.
デフォルトではターゲット環境で gdbserver を起動し,それに Visual Studio から接続します.
gdbserver が見つからないと言われたら gdbserver を入れておきましょう.
% zypper in gdbserver
とか
% apt-get install gdbserver
デバッガの操作
おなじみの画面・操作で変数ウォッチャ,逆アセンブリ,コールスタックを使うことが出来ます.