Як ви користуєтесь негайним вікном у Visual Studio?


121

Негайне вікно - надзвичайно корисний інструмент для налагодження програм. Він може бути використаний для виконання операторів коду, які є дійсними в контексті точки перерви та перевірки значень. Я також використовую його для введення фрагментів коду для вивчення мовних особливостей.

Як ви користуєтесь негайним вікном?


Якщо ви посилаєтесь на видачу окремих команд Visual Studio, то подивіться приклади [Негайне вікно] [1]. Це показує, як оцінювати вирази, виконувати оператори, друкувати значення змінних тощо тощо, окрім прямого вікна. [1]: msdn.microsoft.com/en-us/library/f177hahy(VS.80).aspx
TStamper

2
Є деякі спеціальні команди, в яких важко знайти список. msdn.microsoft.com/en-us/library/ms171362(v=vs.100).aspx Деяка потужність windbg доступна. Раніше можна було вказати адресу, знайти найближчий символ. (ln) Я думаю, що це тупо вимкнули. Я хотів би мати команду windbg dt для відображення типів у структурах і т. Д. Принаймні, ви можете ввести змінну об'єкта, щоб отримати всіх членів у списку з їх значеннями. (замість того, щоб намагатися грати у відкритий вузол, закрити гру з вузлом.)
Кальбр

для Visual Studio 2017 посилання на відповідну документацію є docs.microsoft.com/en-us/visualstudio/ide/reference/…
Pac0

Відповіді:


130

Однією з приємних властивостей негайного вікна в Visual Studio є його здатність оцінювати повернене значення методу, особливо якщо він викликається вашим клієнтським кодом, але він не є частиною призначення змінної. У режимі налагодження, як було зазначено, ви можете взаємодіяти зі змінними та виконувати вирази в пам'яті, що відіграє важливу роль у можливості цього зробити.

Наприклад, якщо у вас був статичний метод, який повертає суму двох чисел, таких як:

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!"

Крім того, якщо ви навіть не хочете оголошувати ім'я змінної для нового об’єкта, а просто хочете запустити один із його методів / функцій, зробіть це:

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

Дуже поширений спосіб побачити значення методу - це вибрати ім'я методу класу та зробити "Додати перегляд", щоб ви могли бачити його поточне значення у вікні "Дивитися". Однак, ще раз, об'єкт потрібно екземплярувати і мати область для відображення дійсного значення. Це набагато менш потужно і більш обмежено, ніж використання миттєвого вікна.

Поряд з методами перевірки, ви можете робити прості математичні рівняння:

? 5 * 6
30

або порівняти значення:

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

Знак питання ('?') Є непотрібним, якщо ви перебуваєте безпосередньо у Негайному вікні, але він тут включений для наочності (щоб розрізняти введені вирази від результатів.) Однак, якщо ви знаходитесь у вікні команд і вам потрібно зробити кілька швидких речей у «Негайному вікні», а потім передувати вашим заявам з «?» і ви йдете.

Intellisense працює в «Негайному вікні» , але іноді це може бути трохи непослідовно. На мій досвід, здається, він доступний лише в режимі налагодження, але не в режимі дизайну, не налагодження.

На жаль, ще одним недоліком негайного вікна є те, що він не підтримує циклів.


1
Як ти знаходиш безпосереднє вікно?
jpaugh

1
Ctrl + Alt + Iабо Налагодження -> Windows -> Безпосередньо
Ray

11

Використовуйте негайне вікно для виконання команд

Негайне вікно також може використовуватися для виконання команд. Просто введіть >наступну команду.

введіть тут опис зображення

Наприклад >shell cmd, запуститься командна оболонка (це може бути корисно, щоб перевірити, які змінні середовища передані, наприклад, Visual Studio). >clsочистить екран.

Ось список команд, які настільки часто використовуються, що вони мають власні псевдоніми: https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx


2
приємна порада. Насправді це чудово поєднується з іншим трюком, який я використовую:>open Filename відкриє вибраний файл у рішенні і навіть має завершення назви файлу.
Філіп Нган

6

Негайне вікно використовується для налагодження та оцінки виразів, виконання операторів, друку змінних значень тощо. Це дозволяє вводити вирази для оцінки або виконання мовою розробки під час налагодження.

Для відображення негайного вікна виберіть Налагодження> Windows> Негайне або натисніть 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.