VisualStudio 2015 で Android および iOS のビルドがサポートされる話も有名です。 RC版でも Android に関してはある程度試せる状況にあるようなので、現時点ではどのくらいのことが出来るか試してみようと思います。RC版でのお話なので、正式リリース版では変更になっている可能性が十分にあります。
プロジェクトテンプレート
VS2015RC では既にプロジェクトテンプレートとして以下のように準備がされています。ここでは OpenGLES Application を用いてテストしています。 見ての通り iOS 用もありますが、手元では iOSのビルドをすると、「error : 無効な URI: ホスト名を解析できませんでした。」とエラーになってしまいその先に進めませんでした。また iOS Debugger, Simulator なるものが存在を期待されているようですが謎です。
ちなみに Android 版のサンプルを実行してみた図が以下の通りです。
見ての通り実機によるデバッグが可能で、その際の各種情報も VisualStudio で表示できています。これらについて詳しく確認していきます。
プロジェクト(Android)
どうやら NativeActivity を用いたプロジェクトのアプリビルドがサポートされるようです。デバッガーについて試してみたところ、 VisualStudio 起動後、デバッグ開始前に、デバイスを接続 もしくは エミュレーターを起動 することでデバッグ対象を選べるようです。もちろんどちらの環境でもソースコードレベルのデバッグが可能でした。
Androidアプリケーションとして Java コードによるものも作成可能でした。しかしながら Java 部分についてブレークポイントが設定できるかと思いきや、そのあたりはサポートなしのようです。単にビルドのみ出来る感じでした。
Java と混在して Activity は java, jni で C/C++ といったものがサポートされるかどうかは未検証です。身近なところでは割と主流の方式なので、使えるかどうかは時間をとって確認してみたいと思います。
ブレークポイントと逆アセンブルウィンドウ
通常のブレークポイントが設定できました。また逆アセンブルウィンドウもうまく動作し、 ARM アセンブラを確認することが出来ました。
ブレーク後にはソースコードレベルでのステップ実行が可能でした。
一方できなかったことは、ディスアセンブルウィンドウ側でのブレークポイント設定が出来ませんでした。また混合モードもうまく機能していないようです。
ブレーク後に、プログラムカウンタの矢印をドラッグして実行位置を編集する機能が通常あったりしますが、これについては Android を対象とする場合には動かないようです。反応しませんでした。
メモリウィンドウ
最初の画面でも表示されていますが、メモリウィンドウはそこそこに動作します。表示形式を変更するのも出来ました。しかし、残念なことに表示されているメモリの中身を直接編集して書き換える機能は実装されていませんでした。割と使う機能だったりするので製品版のころには対応してほしいですね。
ウォッチウィンドウ
変数表示もおおよそ出来ている感じです。VisualStudio (VC) での表示形式指定も効くようで、hoge,x としたら 16進数表示とかちゃんと出来ました。
呼び出し履歴
一部怪しいときもあるようですが、C/C++のコードの範囲では概ねうまく動いているようです。逆アセンブルウィンドウあたりでステップ実行をやりだすとおかしくなった気がします。
デバッグ用出力
デバッガがモジュールのロード等の情報を出力するのは、 VisualStudio が標準的に持っている 出力ウィンドウ に対してでした。 Android で標準的なログ出力は LogCat で確認できるのはもはや定番ですが、これを VisualStudio の1つのウィンドウとして実装したものが準備されていました。
モジュールリスト
ロードしているモジュールリストの表示も行えました。自分の経験から、このモジュールリストはなかなか正常に動かず苦労した覚えがありますが、今回の場合には正常に表示できていて驚きました。今までの基板用何かでは gdb で正常に .so が列挙できなかったりしてましたし。このあたりは NDK 側なのか VisualStudio 側なのかわかりませんがしっかりと出来ていているようです。
まとめ
今回試したのは VisualStudio 2015 RC Community なのですが、無償版でここまでのことが出来るようになるというのは充実していますね。今まで他の市販ツールに頼らざるを得なかった部分がこれだけで出来そうです。各ベンダー独自の詳細情報を使う場合にのみ、独自ツールを使うとか買うとかになりそうです。
INDE の件があるので、まずは VS2015(RC) ではどうだろうと思って調べてみましたが、はっきりいって予想以上に機能がそろっていました。この後の INDE との比較もまた楽しみになってきました。
最後にエミュレーターで起動したときの図も載せておきます。