2011-01-30 2 views
0

Это может показаться глупым, но я новичок в отладке веб-приложения. В чем разница между F11 и F10 при отладке. Кроме того, как вы можете добавить переменную в окно просмотра? Вы можете щелкнуть правой кнопкой мыши и добавить его?отладка в VS 2010

Благодаря

ответ

1

Смотреть комментарии инлайн:

public void Method1() 
{ 
    ExecuteMethod2(); //<------Pressing F10 here, the debugger will take go to the next line (initialize iTemp) 
         //and it would have executed ExecuteMethod2() 
         //---Pressing F11, the debugger will step in the ExecuteMethod2() and you would be able to 
         //debug each line in that method. After the method ends, the debugger would return to the Method1() and continue 

    int iTemp = 0; 
} 

public void ExecuteMethod2() 
{ 
    ..... 
} 

Чтобы ответить на другой вопрос, во время отладки, вы можете правой кнопкой мыши на переменной и добавить смотреть окно.

+0

Если у меня есть утверждения, которые не вызывают функцию, которая находится где-то в другом месте, делают ли обе клавиши то же самое? – frenchie

+0

@frenchie: Предполагая, что когда вы говорите «где-то еще», вы имеете в виду в другом файле dll - там, где у вас нет этого кода или ресурсов отладки, - тогда ДА оба эти ключа работают одинаково. – VoodooChild

+0

ОК, спасибо за объяснение! – frenchie

1

F10 является Шаг Над. Нажатие F10 выполнит весь следующий оператор.

F11 Стадия В. Нажатие F11 войдет в первую функцию, вызываемую следующим оператором, позволяя вам отлаживать эту функцию.

+0

Да, я знаю, что он говорит, но что это значит? – frenchie

1

F10 - Если следующая строка кода вызывает другой метод/функцию в другом месте или в каком-либо другом коде, отладчик выполнит ее, но не будет проходить через нее по строкам. Вы увидите, как отладчик переходит к следующей строке в фрагменте/странице кода, который вы сейчас просматриваете.

F11 - отладчик будет следовать за любым исполнением по строкам, поэтому, если эта строка кода вызывает другой метод или обращается к данным из другого места или другого класса, он также пройдет через это - прыг из класса в класс, если это необходимо , Я считаю это рекурсивным.

class A{ 
    public static void main(string[] args){ 
     A.method1(); 
     A.method2(); 
     A.method3(B.GetMeAnArrayofSomething()); 
     B.method4(); 
    } 
} 

class B{ 
    public GetMeAnArrayOfSomething(){ 
     string[] myArray = new string[5]; 
     for(int i=0;i<=5;i++){ 
      //dosomething repetive 
     } 
     return myArray; 
    } 
} 

Итак, вы переходите по основному методу класса А. Когда вы доберетесь до A.method3, вы можете нажать F10 и переместить селектор линии на A.method4() ИЛИ вы можете нажать F11 и пройти по методу GetMeAnArrayOfSomething класса B по очереди.

Вы можете щелкнуть правой кнопкой мыши и выбрать «Добавить часы», чтобы добавить переменные/объекты в окно непрерывных часов. Также функция Quickwatch добавляет ее к менее постоянному виду. Лично я использую окно Immediate много. Его командная строка настолько быстра и проста, если вам нравится такая штука (я знаю).

HTH

Смежные вопросы