Опубликован: 23.01.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Томский политехнический университет
Самостоятельная работа 9:

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

Аннотация: В данном практическом занятии будет рассмотрен процесс отладки многопоточного приложения с использование окна Threads.

  1. Создадим новое консольное приложение и назовем его "ThreadsDebugApplication":
  2. Добавим в созданное приложение следующий код:
    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);
            }
           
        }
    }
  3. Установим точку останова (Breakpoint) в самое начало метода Main() и запустим отладку с помощью клавиши F5:

    Рис. 21.2.
  4. Откройте окно отладки потоков из меню "Debug" пункт меню "Threads" или с помощью сочетания клавиш "Ctrl+Alt+H":

    Рис. 21.3.

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

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

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

  6. Чтобы перейти на место выполнения конкретного потока, дважды щелкните левой кнопкой мыши на нужном потоке:
  7. Для того что бы заморозить выполнение потока, щелкните на нужном потоке выберите пункт "Freeze", в нашем случае это поток с именем "Thread1":

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

  8. Для завершения процесса отладки используется пункт из меню "Debug" - "Stop Debugging" или сочетание клавиш "Shift+F5":

    Рис. 21.10.
Владимир Каширин
Владимир Каширин

Вопрос по Курсу: "Параллельное программирование с использованием MS VisualStudia 2010".

При компиляции Самостоятельного задания (одновременная отрисовка прямоугольников, эллипсов и выдача в текст-бокс случайного числа) среда предупреждает: suspend - устаревшая команда; примените monitor, mutex и т.п.

Создаётся впечатление, что Задание создано в более поздней среде, чем VS 2010.

Александр Гаврилов
Александр Гаврилов
Россия
Роман Дмитриев
Роман Дмитриев
Россия, Москва