Вопрос по Курсу: "Параллельное программирование с использованием MS VisualStudia 2010". При компиляции Самостоятельного задания (одновременная отрисовка прямоугольников, эллипсов и выдача в текст-бокс случайного числа) среда предупреждает: suspend - устаревшая команда; примените monitor, mutex и т.п. Создаётся впечатление, что Задание создано в более поздней среде, чем VS 2010. |
Опубликован: 23.01.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Томский политехнический университет
Самостоятельная работа 8:
Отладка однопоточного приложения в Visual Studio 2010
< Лекция 12 || Самостоятельная работа 8 || Самостоятельная работа 9 >
Аннотация: В рамках данного практического занятия, будет рассмотрен процесс создания и отладки однопоточного приложения с использованием Visual Studio 2010.
- Создадим Windows приложение с названием "WindowsDebugApplication":
- Создадим простейший калькулятор. Для этого разместим на форме 4 элемента (2 TextBox, 1 ComboBox, 1 Button):
- Добавим в программу следующий код (Коллекция arraysymbol и цикл foreach добавлены для наглядности отладки приложения):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; namespace WindowsDebugApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private double c =0; private void Plus(double a,double b) { c = a + b; } private void Minus(double a, double b) { c = a - b; } private void Multiply(double a, double b) { c = a * b; } private void Split(double a, double b) { c = a / b; } private void ResultButton_Click(object sender, EventArgs e) { string symbol =(string) SymbolcomboBox.SelectedItem; ArrayList arraysymbol = new ArrayList(); foreach (var s in SymbolcomboBox.Items) { arraysymbol.Add(s); } double var1 =Convert.ToDouble(FirstVariable.Text); double var2 = Convert.ToDouble(SecondVariable.Text); switch (symbol) { case "+": Plus(var1, var1); break; case "-": Minus(var1, var1); break; case "*": Multiply(var1, var1); break; case "/": Split(var1, var1); break; } MessageBox.Show("Результат: " + c); MessageBox.Show("Количество символов в коллекции: "+ arraysymbol.Count); } } }
- Теперь, расставим точки останова (breakpoints) в программе. В примере точки останова расставлены напротив методов математических операций и в событии кнопки:
Список доступных всех точек останова (Breakpoints), можно посмотреть в специальном окне, которое вызывается из меню Debug пункт меню "Breakpoints" или сочетанием клавиш CTRL+ALT+B:
- Запустите отладку приложения с помощью пункта "Start Debugging" - меню "Debbug" или с помощью клавиши "F5":
- После ввода значений в поля программы и выбора соответствующей операции (сложение, вычитание и т.д), жмем кнопку "Рассчитать", тем самым вызовется метод ResulButton_Click():
- Запустится пошаговый процесс отладки приложения с точки останова (Breakpoint) в методе ResulButton_Click():
- Добавим для просмотра значений переменных - переменные arraysymbol (коллекция), и переменную "с". Для этого щелкните на нужной переменной правой кнопкой мыши и выберите из списка "Add Watch":
Переменные также, можно вручную добавлять в список Watch, для этого, достаточно написать имя нужной переменной в колонке Name:
Если нужно просматривать состояние всех переменных во время отладки, используется окно Autos (переменные будут появляться в окне автоматически, в зависимости от шага отладчика):
- Используйте кнопку "F10" для пошаговой отладки приложения. В процессе пошаговой отладки, курсор отладчика будет заходить в те методы, которые вызываются в методе ResulButton_Click(), в нашем случае это метод Plus() (т.к была выбрана операция сложения - "+"):
- В процессе отладки приложения, значения переменных, в списке Watch, будут изменяться в зависимости от шага:
Всего разработчику доступны четыре списка Watch, которые вызываются из меню Debug или с помощью горячих клавиш "Ctrl+Alt+W,1":
- После завершения отладки (и если не возникло не каких ошибок) программа выдаст результаты:
- Повторно запустим отладку приложения и намеренно введем значения, вызывающие исключение. В нашем случае это "1a" и "2":
- Если в программе не обрабатываются исключения (блок try, catch), отладчик выдаст ошибку, на строке, где возникает исключение. В нашем случае исключение, связанное с преобразованием формата типа string в формат double:
- Для того что бы остановить отладку используйте пункт меню "Stop Debugging" меню Debug или используя сочетание клавиш "Shift+F5":
< Лекция 12 || Самостоятельная работа 8 || Самостоятельная работа 9 >