LoginSignup
4
1

More than 5 years have passed since last update.

VisualStudio2017でLinuxアプリのリモートデバッグ

Last updated at Posted at 2018-04-11

はじめに

VisualStudio2017で簡単にLinux向けアプリのデバッグができるとのことで,試した記録を残します.
[追記]
今回の環境を使用する上で発生した問題と,その解決策を別記事に記載しました.
(https://qiita.com/nyasai/items/fc2e201f6728162cd0fa)

VirtualBoxの設定

ホストOSからゲストOSへのssh接続

ホストOSからゲストOSへssh接続を行えるよう,VirtualBoxの設定を行います.
1.ssh接続を行うゲストOSの仮想マシン設定から,ネットワークにNATを追加.
[追記]
下記設定でやるならここでホンストオンリーアダプターも追加する必要がありますね.ssh接続するときはここで追加したホンストオンリーダプターに割り当てられているIPに対して行うといけるはずです.
ネットワーク設定

2.NAT設定にしたアダプタの高度設定からポートフォワーディング設定を開き,ssh用の設定を追加.
ポートフォワーディング設定

必要なツール類のインストール

ここでopenssh-server,g++,gdb,gdbserver をインストールします.既にインストール済みの場合は不要です.
1.ゲストOSのシェルで以下を実行.

sudo apt install openssh-server g++ gdb gdbserver

2.ゲストOSにて以下コマンドを実行し,sshサービスを実行.

sudo service ssh start

VisualStudio2017の設定,実行

プロジェクトの作成

Visual C++のクロスプラットフォームのLinuxを選択し,コンソールアプリケーションを作成します.
プロジェクト作成

※ここで当該選択肢がない場合は,インストーラから「C++によるLinux開発」を選択し,インストールしてください.
Linux開発用環境追加

実行するコードの作成

ここで日本語を表示しようとするとソースファイルがShift-JISのため,文字化けが発生します.そのため,テキストエディタ等でソースファイルの文字コードをUTF-8に変更してください.
また,linux固有の関数等はインテリセンスが使用できません.使用したい場合はLinux上の/usr/includeをWindows側にコピー,追加のインクルードディレクトリに登録する必要があります.もしくはSambaで共有させて,それをインクルードディレクトリに登録することでも可能なようです.
[参考]https://docs.microsoft.com/ja-jp/cpp/linux/configure-a-linux-project#vc-directories
[参考2(Samba共有)]https://qiita.com/mt08/items/5070df64e5af2285d5b5#%E3%81%8A%E3%81%BE%E3%81%91

[追記]
VS2017のヴァージョン新しくしていれば,自分でインテリセンス用の設定を行わなくても,VS側がダウンロードして設定してくれるようですね.

maint.cpp
// テスト用  
#include <iostream>
#include <pthread.h>


static void* test_thread(void* arg)
{
    char* msg = (char*)arg;
    std::cout << msg << "\n";
    pthread_exit(NULL);
}


int main()
{
    pthread_t thread1;
    char* msg = "Test Thread!!";

    if (pthread_create(&thread1, NULL, test_thread, (void*)msg) != 0)
    {
        std::cout << "error\n";
        return -1;
    }

    pthread_join(thread1, NULL);

    return 0;
}  

ライブラリのリンク等

プロジェクトのプロパティから,「リンカー」->「コマンドライン」の追加のオプションに追加することでライブラリリンク等ができます.
今回はpthreadを使用したいので「-pthread」を追加します.
オプション追加

コンソールの起動

VisualStudioのツールバーのから「Linuxコンソール」を起動してください.ここに標準出力に出力した内容等が表示されます.
Linuxコンソール起動

Linuxコンソール

デバッグ実行

デバッグ実行を行うと初回のみ以下のような画面がでてきますので,ゲストOSの設定に従って設定を行ってください.

項目 設定内容
ホスト名 ゲストOSのIPアドレス
ポート 22
ユーザ名 ゲストOSのユーザ名
認証の種類 パスワード
パスワード ユーザ名で入力したゲストOSのユーザのパスワード

初回実行.JPG

設定の入力が完了し,接続ボタンを押下すると,ビルドが走りデバッグ実行が開始されます.
デバッグ実行.JPG

まとめ

以上で最低限VisualStudio2017からLinux向けアプリのリモート実行を行うことができます.
VisualStudioでLinux向けのアプリのコーディング,デバッグを行えるのは便利でいいですね.

補足

補足1

一度設定したリモートデバッグ先の情報はVisualStudioのツールバーの「デバッグ」->「オプション」->「クロスプラットフォーム」にあるので,ここで削除や新たに追加することも可能です.
ビルド先設定.JPG

補足2

ビルド時に生成される実行ファイル等は,ゲストOSのログインしたユーザのホームディレクトリの「projects]フォルダ内にプロジェクト名どう同一のフォルダ名で作成されます.
ゲストOS実行ファイル.JPG

参考資料

Linux プロジェクトのデプロイ、実行、デバッグ
https://docs.microsoft.com/ja-jp/cpp/linux/deploy-run-and-debug-your-linux-project
Linux プロジェクトの構成
https://docs.microsoft.com/ja-jp/cpp/linux/configure-a-linux-project#vc-directories
[メモ] Visual C++ for linux Development でOpenGL
https://qiita.com/mt08/items/5070df64e5af2285d5b5#%E3%81%8A%E3%81%BE%E3%81%91

4
1
0

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
4
1