TOC

This article has been localized into Russian by the community.

Отладка:

Пошаговое выполнение кода

В этой главе вы познакомитесь с пошаговым выполнением кода, что является еще одной важной частью отладки. Я специально написал это простое приложение:

namespace DebugTest
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            a = a * 2;
            a = a - 3;
            a = a * 6;
            Console.WriteLine(a);
        }
    }
}

Оно просто манипулирует переменной "a" пару раз и выдает конечный результат. Попробуйте поместить точку останова, как описано в предыдущей главе, в самую первую строку, где используется (и объявлено). Теперь запустите приложение. Выполнение остановлено, и вы можете навести курсор мыши на a, чтобы убедиться, что то, что мы узнали в предыдущей главе, на самом деле верно: переменная содержит только значение по умолчанию, потому что код, который присваивает значение (в данном случае 5), еще не был выполнен, но давайте изменим это. В меню отладка выберите опцию "перешагнуть" или, что еще лучше, используйте сочетание клавиш F10. Теперь выполнение будет переходить к следующей соответствующей строке, и если навести курсор мыши на переменную a, вы увидите, что она имеет значение. Попробуйте еще раз, и вы увидите изменение значения в соответствии с линиями выполняется один за другим, пока вы не достигли конца.

Ладно, это было довольно просто, но также и очень полезно, как вы поймете, как только начнете писать более сложный код. В этом примере поток кода был очень прост, так как мы оставались в пределах одной функции, но что, если ваш код начинает распространяться по нескольким классам и/или функциям? Попробуйте этот пример:

namespace DebugTest
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            int b = 2;
            int result = MakeComplicatedCalculation(a, b);
            Console.WriteLine(result);
        }

        static int MakeComplicatedCalculation(int a, int b)
        {
            return a * b;
        }
    }
}

Поместите точку останова на первой строке метода main и запустите приложение. Теперь используйте функцию "Step over", чтобы пройти через каждую строку. Как вы увидите, она перемещается по вызову функции без какого-либо уведомления - это просто, как работает отладка. Теперь попробуйте еще раз, с самого начала, и как только вы перешли к строке с вызовом MakeComplicatedCalculation (), выберите Debug -> Step into или используйте сочетание клавиш F11. Отладчик переходит к первому возможному вызову функции, что также позволяет выполнить пошаговое выполнение этой функции. Как вы можете себе представить, это позволяет вам пройти через сложный блок кода, вводя только те функции, которые вас интересуют.

Если вы входите в функцию, а затем понимаете, что вы предпочли бы вернуться к предыдущему контексту, вы используете очень логически названную опцию из меню отладки под названием "Step out" (сочетание клавиш Shift+F11). Это вернет вас к вашему предыдущему контексту, что, очевидно, означает, что вы можете войти в столько вызовов функций, сколько хотите, а затем найти свой путь назад, используя опцию step out.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!