Основы параллельного программирования с использованием Visual Studio 2010

Отладка многопоточного приложения

Показывать лекцию целиком
  • Создадим новое консольное приложение и назовем его "ThreadsDebugApplication": (рис 21.1)
  • Добавим в созданное приложение следующий код:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    namespace ThreadsDebugApplication
    {
        class Program
        {
           
            static void Main(string[] args)
            {
                Thread t1 = new Thread(new ThreadStart(Hello));
                t1.Name = "Thread 1";
                Thread t2 = new Thread(new ThreadStart(World));
                t2.Name = "Thread 2";
                t1.Start();  
                t2.Start();
                Console.ReadLine();   
            }
            static void Hello()
            {
                  Console.Write("Hello ");
                  Thread.Sleep(10000);
            }
            static void World()
            {   
                Console.WriteLine("world!");
                Thread.Sleep(10000);
            }
           
        }
    }
  • Установим точку останова (Breakpoint) в самое начало метода Main() и запустим отладку с помощью клавиши F5: (рис 21.2)
  • Откройте окно отладки потоков из меню "Debug" пункт меню "Threads" или с помощью сочетания клавиш "Ctrl+Alt+H": (рис 21.3)

    В появившемся окошке будут отображаться все текущие рабочие потоки:

    (рис 21.4)
  • С помощью клавиши "F10" доберитесь до строчки с кодом Console.Readline(), как показано на рисунке: (рис 21.5)

    В окне отладки потоков можно увидеть два созданных потока:

    (рис 21.6)
  • Чтобы перейти на место выполнения конкретного потока, дважды щелкните левой кнопкой мыши на нужном потоке: (рис 21.7)
  • Для того что бы заморозить выполнение потока, щелкните на нужном потоке выберите пункт "Freeze", в нашем случае это поток с именем "Thread1": (рис 21.8)

    После выполнения программы выведется результат без "замороженного" потока:

    (рис 21.9)
  • Для завершения процесса отладки используется пункт из меню "Debug" - "Stop Debugging" или сочетание клавиш "Shift+F5": (рис 21.10)
  • Вернуться к учебному плану