検索
ニュース

ソースコードがなくても「.exeをデバッグ」、Visual Studioの利用法をMicrosoftが紹介標準機能で実行可能

Microsoftは、「Visual Studio」で任意の実行可能ファイルをプロジェクトとして開き、デバッグやプロファイリングを実行する機能を公式ブログで紹介した。

Share
Tweet
LINE
Hatena

 Microsoftは2019年9月18日(米国時間)、「Visual Studio」で任意の実行可能ファイル(.exeファイル)をプロジェクトとして開き、デバッグやプロファイリングを実行する機能を公式ブログで紹介した。ソースコードを入手できない、または入手できたとしてもビルドできない場合でもデバッグできる。

 Visual Studioで実行可能ファイルをプロジェクトとして開くには、[ファイル]−[開く]−[プロジェクト/ソリューション]を選択し、[プロジェクトを開く]ダイアログで.exeファイルを選択すればよい。

 この機能は以前から提供されており、現在サポートされている全てのバージョンのVisual Studioで利用できる。ドキュメントもある。「Visual Studio ソリューションに含まれていないアプリのデバッグ」だ。


Visual Studio 2019で.exeファイルを開いているところ(クリックで拡大、出典:Microsoft

デバッグを始めるには

 通常のプロジェクトの場合と同様、デバッグを開始するために[F5]を押すと、.exeが起動する。起動時のデバッグが目的なら、[F11]を押す。これらのオプションは、[ソリューションエクスプローラー]ウィンドウのコンテキストメニューから選択できる。


ソリューションノードからデバッグを開始するところ(出典:Microsoft

 デバッグを進めるには、デバッグ対象となる.exeと.dll、PDBファイル(プログラムデータベースファイル)が必要になる。Visual Studioは、通常のプロジェクトをデバッグする場合と同様のプロセスをたどり、シンボルを取得しようとする。PDBファイルが.exeとともに配布されている場合は多くないため、ビルドドロップか、シンボルサーバから入手する。後者の方が望ましい。

 効果的にデバッグを行うには、.exeのソースコードをVisual Studioで特定し、開く必要がある。.exeの作成に使われたものと完全には同一でないソースコードを選んだ場合、ブレークポイントを挿入しようとすると、Visual Studioがワーニングを出し、ブレークポイントをバインドしない。

 それでもデバッグを実行した場合は、ブレークポイント設定ピークウィンドウからデフォルト設定を変更する。具体的には、次の画面のように、同ウィンドウで、一致しないソースコードを許容するよう設定する。もちろん、この場合、どのような挙動となるかは分からないので、設定するかどうかは自己責任だ。


同一のソースコードを要求しないようブレークポイントを設定したところ(クリックで拡大、出典:Microsoft

ソースコードを入手できないときは

 .exeをビルドしたときに「SourceLink」が有効になっていれば、ソースコードの情報がPDBファイルに含まれており、Visual Studioは、自動的にソースコードをダウンロードしようとする。SourceLinkは、バイナリとソースコードを正しく関連付ける確実な方法だ。

 ソースコードが全く手に入らない場合の選択肢は、2つある。

  • アセンブリからC#へデコンパイルするツールを使う。C#を新しいアセンブリに再コンパイルし、元のアセンブリにパッチを当てることができる。無料の「ILSpy」や有料のものなど、多数のツールを選択できる
  • Visual Studioで[逆アセンブリ]ウィンドウを使う。これは最後の手段だ

 .exeに引数を渡してデバッグする必要がある場合は、[プロジェクトプロパティ]ページで設定する。


.exeに引数を渡してデバッグする設定画面(クリックで拡大、出典:Microsoft

.exeでプロファイリングツールを使うには

 [デバッグ]−[パフォーマンスプロファイラ]から起動すれば、.exeでプロファイリングツールを利用できる。プロファイリングツールの起動ページから、どのツールを使うかを選択することも可能だ。プロファイリングに関するドキュメントもある。「クイック スタート: プロファイリング ツールの概要」だ。


.exeプロジェクトのためにパフォーマンスプロファイラを起動したところ(出典:Microsoft

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る