Visual Studioでイミディエイトウィンドウをどのように使用しますか?


121

イミディエイトウィンドウは、アプリケーションのデバッグに非常に役立つツールです。ブレークポイントのコンテキストで有効なコードステートメントを実行し、値を検査するために使用できます。また、言語の機能を学習するためのコードスニペットの入力にも使用します。

イミディエイトウィンドウをどのように使用しますか?


個別のVisual Studioコマンドを発行する場合は、[イミディエイトウィンドウ] [1]で例を確認してください。これは、式を評価する方法、ステートメントを実行する方法、変数値を出力する方法などを、イミディエイトウィンドウで表示します。[1]:msdn.microsoft.com/en-us/library/f177hahy
VS.80).aspx

2
リストを見つけるのが難しいいくつかの特別なコマンドがあります。msdn.microsoft.com/en-us/library/ms171362(v=vs.100).aspx windbgの一部の機能が利用できます。住所を指定すると、最も近いシンボルを見つけることができました。(ln)ばかげてオフになったと思います。windbgのdtコマンドで構造体などの型を表示したいのですが、少なくともオブジェクト変数を入力して、リスト内のすべてのメンバーとその値を取得できます。(オープンノードをプレイしようとするのではなく、ノードゲームをクローズします。)
kalbr '18

Visual Studioの2017年のために、関連文書へのリンクがあるdocs.microsoft.com/en-us/visualstudio/ide/reference/...
Pac0

回答:


130

Visual Studioのイミディエイトウィンドウの優れた機能の1つは、特にクライアントコードによって呼び出されたが、変数割り当ての一部ではない場合に、メソッドの戻り値を評価できることです。デバッグモードでは、前述のように、変数を操作し、メモリ内で式を実行できます。これは、これを実行する上で重要な役割を果たします。

たとえば、次のような2つの数値の合計を返す静的メソッドがあるとします。

private static int GetSum(int a, int b)
{
    return a + b;
}

次に、イミディエイトウィンドウで次のように入力します。

? GetSum(2, 4)
6

ご覧のとおり、これは静的メソッドに対して非常にうまく機能します。ただし、メソッドが静的でない場合は、メソッドが属するオブジェクトへの参照を操作する必要があります。

たとえば、次のようなクラスがあるとします。

private class Foo
{
    public string GetMessage()
    {
        return "hello";
    }
}

オブジェクトが既にメモリに存在し、スコープ内にある場合は、現在のブレークポイントの(または少なくとも、デバッグモードでコードが一時停止される前)にインスタンス化されている限り、イミディエイトウィンドウで呼び出すことができます。

? foo.GetMessage(); // object ‘foo’ already exists
"hello"

さらに、メモリ内の既存のインスタンスに依存せずにメソッドを直接操作してテストしたい場合は、イミディエイトウィンドウで独自のインスタンスをインスタンス化できます。

? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"

さらに一歩進んで、さらに評価、計算などを行う場合は、メソッドの結果を一時的に変数に割り当てることができます。

? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"

さらに、新しいオブジェクトの変数名を宣言する必要がなく、そのメソッド/関数の1つだけを実行する場合は、次のようにします。

? new Foo().GetMessage()
"hello" 

メソッドの値を表示する非常に一般的な方法は、クラスのメソッド名を選択し、[ウォッチの追加]を実行して、[ウォッチ]ウィンドウで現在の値を確認できるようにすることです。ただし、ここでも、有効な値を表示するには、オブジェクトをインスタンス化してスコープ内に置く必要があります。これは、イミディエイトウィンドウを使用するよりもはるかに強力で制限が少なくなります。

メソッドの検査に加えて、簡単な数式を実行できます。

? 5 * 6
30

または値を比較します:

? 5==6
false
? 6==6
true

疑問符( '?')は、イミディエイトウィンドウに直接いる場合は不要ですが、わかりやすくするためにここに含まれています(式の入力と結果を区別するため)。ただし、コマンドウィンドウを使用していて、イミディエイトウィンドウで簡単な操作を行うには、ステートメントの前に「?」を付けます。そして、あなたは行き​​ます。

Intellisenseは[イミディエイトウィンドウ]機能しますが、少し矛盾する場合があります。私の経験では、これはデバッグモードでのみ使用でき、デザイン、非デバッグモードでは使用できないようです。

残念ながら、イミディエイトウィンドウのもう1つの欠点は、ループをサポートしないことです。


1
どのようにして即時ウィンドウを見つけますか?
jpaugh 2017年

1
Ctrl + Alt + Iまたはデバッグ->
Ray

11

イミディエイトウィンドウを使用してコマンドを実行する

イミディエイトウィンドウは、コマンドの実行にも使用できます。>コマンドを続けて入力するだけです。

ここに画像の説明を入力してください

たとえば>shell cmd、コマンドシェルを起動します(これは、たとえば、Visual Studioに渡された環境変数を確認するのに役立ちます)。>cls画面をクリアします。

よく使用されるコマンドのリストを次に示します。これらのコマンドには独自のエイリアスがあります。https//msdn.microsoft.com/en-us/library/c3a0kd3x.aspx


2
いいヒント。実際、これは私が使用する別のトリックとうまく結合しています。>open Filename選択したファイルをソリューションで開き、ファイル名を補完することさえします。
Phillip Ngan、2017

6

イミディエイトウィンドウは、式のデバッグと評価、ステートメントの実行、変数値の出力などに使用されます。デバッグ中に開発言語によって評価または実行される式を入力できます。

イミディエイトウィンドウを表示するには、[デバッグ]> [ウィンドウ]> [イミディエイト]を選択するか、Ctrl-Alt-Iを押します。

ここに画像の説明を入力してください

イミディエイトウィンドウの例を次に示します。

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

ブレークポイントを追加

ここに画像の説明を入力してください

コマンドを呼び出す

ここに画像の説明を入力してください

https://msdn.microsoft.com/en-us/library/f177hahy.aspx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.