LoginSignup
5
17

More than 5 years have passed since last update.

Visual Studio でのリモートデバッグ(Linux)

Last updated at Posted at 2017-08-19

Visual Studio 2015 以降,リモートデバッグがサポートされました.
ターゲットの Linux 環境でコンパイルし GDB 上で実行し,その GDB を Visual Studio のデバッガのインタフェイスを使って操作できるようになっています.

新規プロジェクト作成

newproject.PNG

コードを書く

code.PNG

標準 C/C++ ライブラリに含まれないようなものは,Visual Studio 上は構文エラーとして見えます.
とはいえコードのコンパイルと実行はターゲットの Linux 上で実行されるため,ターゲットの環境で g++ などを叩いてコンパイルできるコードであれば問題ありません.

syntaxerror.PNG

どうしても気になる人はターゲットシステムからヘッダファイル一式を持ってきて適当なディレクトリに放り込んでプロジェクトプロパティのインクルードディレクトリに追加しておけば良いです.

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 環境のコンソールを開いておきます.

linux_console.PNG

初めてリモートデバッグを使用する場合は接続先を指定する画面が出ます.

ssh.PNG

実行できるとこんな感じ.
console_out.png

デフォルトではターゲット環境で gdbserver を起動し,それに Visual Studio から接続します.

gdbserver が見つからないと言われたら gdbserver を入れておきましょう.

gdbserver_notfound.PNG

% zypper in gdbserver
とか
% apt-get install gdbserver

デバッガの操作

おなじみの画面・操作で変数ウォッチャ,逆アセンブリ,コールスタックを使うことが出来ます.

break.PNG

5
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
17