Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Окно наблюдения Watch List.

Компиляция без последующего выполнения. | Команды для работы с группой проектов. | Точки прерывания. | Использование окна Инспектора Отладки Debug Inspector | Протокол событий, функция OutputDebugString |


Читайте также:
  1. A Babylonian Sand Watch
  2. A Gold Watch and Money
  3. A: Are you watching TV tonight? – Yes, I ... watch the interview with the Queen.
  4. All Along The Watchtower
  5. Alt spent a long time watching TV. Give him advice.
  6. Assignment 3. Fill in the blanks with an appropriate word from the list.
  7. B) Read the argumentative essay. Fill in the blanks with transition expressions from the list. Then answer the postreading questions.

 

Мастер оценки выражений, конечно, хороший инструмент, но он дает значения только отдельных переменных сразу, а в сложных приложениях вам надо иметь перед глазами значения нескольких переменных сразу, чтобы из их сравнения понять причины неправильной работы приложения. Такую возможность предоставляет вам окно наблюдения Watch List. Сделать его видимым можно командой View | Debug Windows | Watches. Но этого даже можно не делать. Достаточно подвести курсор в коде к интересующей вас переменной и нажать Ctrl + F5. При этом окно наблюдения автоматически откроется и в нем появится имя переменной и ее значение (значение переменной будет видно только при остановке выполнения приложения). Затем вы можете подвести курсор к другой переменной, опять нажать Ctrl+F5 и в окне наблюдения появится новая строка. Более того, вы можете выделить курсором какое-то выражение, нажать Ctrl+F5 и в окне наблюдения увидеть значение этого выражения.

На рисунке представлено окно наблюдения в момент, когда в нашем приложении произошла генерация исключения. Можно видеть, что переменная А равна 10308, а значение выражения А*10000 указано равным 10312. Значит, при очередном умножении А на 10000 возникает переполнение, так как переменная типа double не может хранить столь большое число. В этом и заключается причина возникновения ошибки в нашем примере.

Окно наблюдения прекрасный инструмент, но при его использовании надо соблюдать некоторые правила. Когда вы пишете код, то по умолчанию считается, что все компоненты принадлежат текущей форме и все свойства, для которых вы не указываете объект, относятся также к текущей форме. В окне наблюдений подобных предположений не делается. Поэтому, если вы занесете в окно, например выражение Label1.Caption, то при останове выполнения приложения получите вместо значения этого выражения сообщение: «Undefined symbol ‘Label1’» -- не определен символ ‘Label1’. Если же вы добавите в это выражение ссылку на форму Form1, как это сделано на рисунке, то все будет работать нормально.

Иногда переменные не удается наблюдать, потому что оптимизирующий компилятор удалил их из результирующего кода и помещает соответствующие значения в системные регистры. Это ускоряет выполнение вычислений в приложении, экономит память, но препятствует наблюдению переменных в процессе отладки. В таких случаях можно отключить оптимизацию (выключить флажок Optimization страницы Compiler окна Project Options, которое вы можете вызвать командой Project | Options).

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

Рассмотрим теперь работу с окном наблюдения. Перейдя в него, вы можете щелкнуть правой кнопкой мыши и во всплывающем меню выбрать ряд команд, в частности: Edit Watch (отредактировать наблюдаемое выражение) или Add Watch (вставить новое наблюдаемое выражение). В обоих случаях вы попадаете в окно Watch Properties, представленное на рисунке. Вы можете попасть в это окно из окна наблюдения и проще, нажав клавиши Ctrl+F5.

Рассмотрим коротко отдельные элементы окна Watch Properties. В окне редактирования Expression вы можете записать имя любой переменной или любое выражение, содержащее переменные, константы, функции. Окно редактирования Repeat count используется при наблюдении массивов и позволяет задать число наблюдаемых элементов массива. Например, если у вас в программе имеется массив X, вы можете просто указать в окне Expression имя переменной Х. Тогда в окне наблюдений будут отображаться все элементы массива Х. Но вы можете указать в окне Expression первый элемент массива X [0], а в окне Repeat count написать, например, 10. Тогда в окне наблюдений будут отображены только первые 10 элементов массива.

Окно редактирования Digits определяет число вводимых значащих разрядов чисел с плавающей точкой. Индикатор Enabled позволяет отключить вывод в окно наблюдения соответствующего выражения во время выполнения приложения. Это повышает производительность выполнения. А после того, как приложение остановлено и вам надо все-таки посмотреть данное выражение в окне наблюдения, выделите его в этом окне и сделайте на нем двойной щелчок. Откроется Watch Properties с загруженным в него выражением и вам останется только включить индикатор Enabled и щелкнуть ОК.

Индикатор Allow Function Calls разрешает включать в окно наблюдения выражения, содержащие вызовы функции. Попытайтесь в нашем примере ввести в окно наблюдения выражение FloatToStr(A). Вы получите замечание “Inaccessible value” – недоступная величина. Но если вы сделаете двойной щелчок на этом выражении в окне наблюдения и в появившемся окне Watch Properties установите индикатор Allow Function Calls, сообщение об ошибке исчезнет и результат выражения станет нормально отображаться. Можно поступить иначе: выполнить команду Tools | Debugger Options и в появившемся многостраничном диалоговом окне на странице General установить опцию Allow function calls in new watches. Тогда всегда все новые выражения, добавляемые в окно наблюдения, будут допускать вызовы функций.

Радиокнопки в нижней части окна Watch Properties задают формат вывода значения переменной или выражения. По умолчанию включена кнопка Default. В этом случае формат определяется автоматически по типу отображаемого выражения. Но вы можете выбрать и другой формат. например, вы можете воспользоваться радиокнопками, чтобы отображать некоторую целую переменную один раз в десятичном виде, а второй раз – в шестнадцатеричном.

В заключение посмотрим, как можно редактировать список выражений в окне наблюдения. Удалить какое-то выражение из списка можно выделив его и нажав Delete. Вернуться в Watch Properties и отредактировать – двойной щелчок.

5. Окно оценки и модификации Evaluate/Modify

Окно оценки и модификации Evaluate/Modify позволяет вам в процессе отладки не только наблюдать, но и изменять значения переменных. Сделать это окно видимым можно командой Run | Evaluate/Modify. Соответствующую команду Debug | Evaluate/Modify можно также выбрать из контекстного меню, всплывающего при щелчке правой кнопкой в окне Редактора Кода.

Окно имеет вид, представленный на рисунке. В его верхнем окошке редактирования Expression вы можете ввести имя переменной или выражение. После этого, щелкнув на кнопке Evaluate, вы увидите в окошке Result значение этого выражения. Эти возможности пока ничем не отличаются от возможностей рассмотренного ранее окна наблюдения и даже слабее, поскольку дают значение только одной переменной или одного выражения. Но если вы указали в окошке Expression имя переменной, а не выражения, то вам становится доступной кнопка Modify, позволяющая изменить значение переменной. Т.е. вы можете вмешаться в процесс выполнения приложения и насильственно изменять значения переменных.

Пусть, например, мы решили изменить значение переменной А, вызвавшей переполнение, и посмотреть, как будут далее протекать события в приложении. Тогда мы должны в окошке Expression указать имя этой переменной, в окошке New value написать ее новое значение в виде числа или какого-то выражения (на рисунке написано выражение «А/2е300») и нажать кнопку Modify. В результате значение переменной в приложении изменится, что можно видеть в окошке Result. Измененное значение вы увидите и в окне наблюдения, если перейдете в него.

Поскольку вы резко уменьшили значение переменной А, можете после этого нажать F9, чтобы продолжить выполнение приложения. И оно будет продолжено, хотя, конечно, не надолго. После двух щелчков на кнопке ошибка переполнения возникнет вновь.

В данном примере исправление значения переменной, естественно, не имело практического смысла. Но в реальных приложениях это может оказаться очень полезным. Большое приложение может выполняться не доли секунды, как наш пример, а минуты, десятки минут и более. Тогда становится очень актуальной возможность оперативно исправить значения переменных, вызванные ошибкой, которую вы уже поняли, и продолжить отладку, не запуская выполнение опять с начала.


Дата добавления: 2015-11-13; просмотров: 87 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Ошибка выполнения.| Выполнение приложения по шагам.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)