ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 10

Глава 7. Точки останова
В Турбо отладчике TDW понятие точек останова используется для описания таких функций отладчика, как точки останова, точки наблюдения и точки трассировки. 
Обычно точки останова, точки наблюдения и точки трассировки определяют следующим образом: точка останова представляет собой то место в программе, в котором вы хотите приостановить выполнение, чтобы проверить переменные программы и структуры данных. Точки
 наблюдения приводят к тому, что ваша программа будет выполняться по шагам (по одной инструкции исходного кода), пока наблюдаемое значение определенных переменных программы не примет истинного значения (true). Точки трассировки приводят к пошаговому (по 
одной инструкции или строке исходного кода) выполнению программы, позволяя наблюдать за изменением определенных переменных программы или выражений со ссылками на память. 
В Турбо отладчике TDW эти три концепции унифицируются, а понятие точки останова влючает в себя три следующих элемента: 
- место в программе (адрес), где находится точка останова;
- условие, при котором она срабатывает;
- что происходит, когда срабатывает точка останова.
Адрес может представлять собой отдельный адрес в программе или быть глобальным (при этом останов может происходить на любой строке исходного кода или инструкции программы). 
Под условиями могут подразумеваться следующие условия, когда происходит останов: 
- всегда;
- когда выражение принимает истинное значение;
- когда объекты данных изменяют свое значение;
- когда выводится сообщение Windows.
Примечание: Подробнее о точках останова по сообщениям рассказывается ниже. 
Можно также задавать "счетчик проходов", который задает, чтобы прежде чем сработает точка останова, "условие" должно принимать истинное значение определенное число раз. 
При достижении точки останова может наступать следующее событие: 
- остановка выполнения программы (точка останова);
- регистрация значения выражения;
- выполнение выражения.
В данной главе мы покажем вам, что точки останова Турбо отладчика TDW являются более гибким и мощным средством, чем обычные точки останова, точки наблюдения или точки трассировки. Вы узнаете об окне Breakpoints (Точки останова) и окне Log (Регистрация), 
а также о том, как устанавливать простые точки останова, условные точки останова для остановки по условию и точки останова, в которых регистрируется значение переменных вашей программы. Наконец, мы покажем, как можно задавать точки останова, позволяющие 
наблюдать точный момент, когда переменная, объект данных или выражение программы изменяет свое значение. 
Во многих случаях вам понадобиться задавать только простые точки останова. При этом при достижении программой одного из таких адресов она останавливается. Вы можете задать или отменить точку останова в любом месте программы. Для этого курсор просто помещ
ается на строку исходного кода и нажимается клавиша F2. Можно также задать точку останова на любой строке машинного кода, для чего клавиша F2 нажимается после того, как вы укажете инструкцию в области Code (Код) окна CPU (Центральный процессор). Если у в
ас есть "мышь", то для установки точки останова щелкните кнопкой "мыши", позиционировав указатель на первые две позиции той строки, где требуется установить точку останова (если вы находитесь в правой позиции, то в качестве индикатора позиции выводится с
пециальный символ). На число устанавливаемых вами точек останова ограничений не накладывается. 
Меню Breakpoints
Доступ к глобальному меню Breakpoints (Точки останова) можно получить в любой момент с помощью оперативных клавиш Alt-B. 
              ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДї
              і Toggle                  F2і
              і At...               Alt-F2і
              і Changed memory global...  і
              і Expression true global... і
              і Delete All                і
              АДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Команда Toggle
Команда Toggle (Переключение) устанавливает или отменяет точки останова по текущему (подсвеченная строка) адресу в окне Module (Модуль) или области Code (Код) окна CPU (Центральный процессор). Можно также воспользоваться оперативной клавишей F2. 
Команда At...
Команда At... (На...) устанавливает точку останова по конкретному адресу в программе. Этот адрес нужно ввести в ответ на выводимую подсказку. Сокращенным вариантом данной команды являются оперативные клавиши Alt-F2. По данной команде выводится диалоговое
 окно, в котором устанавливаются параметры точки останова. 
Команда Changed Memory Global...
    Команда Changed Memory Global... (Измененная глобальная память...) устанавливает точку останова, которая срабатывает, когда данная область памяти изменяет свое значение. Более подробная информация содержится далее в описании команды Changed Memory (И
змененная память) в разделе "Локальное меню окна Breakpoints". 
Команда Expression True Global...
Команда Expression True Global... (Истинное значение глобального выражения...) устанавливает точку останова, которая срабатывает, когда заданное вами выражение примет истинное значение. Более подробная информация содержится далее в описании команды Condi
tion Expression True (Истинное значение условного выражения) в разделе "Локальное меню окна Breakpoints". 
Команда Delete All
Команда Delete All (Удалить все) отменяет все установленные точки останова. 
Область действия выражений, заданных для точек останова
И действием, которое будет выполняться при достижении точки останова, и условием, при котором она срабатывает, можно управлять с помощью задаваемого вами выражения. Это выражение вычисляется с использованием области действия адреса, где установлена точка
 останова, а не той области действия, где в данный момент остановилась программа. Это означает, что в вашем выражении для точки останова могут использоваться только имена переменных, которые являются допустимыми в том месте программы, где задана точка ос
танова (если эта область действия не переопределена). Полностью область действия обсуждается в Главе 9. 
В части выражения вы можете использовать переменные, являющиеся по отношению к подпрограмме локальными, однако такие точки останова обрабатываются гораздо медленее, чем те, в которых используются только глобальные или локальные по отношению к модулю пере
менные. 
Окно Breakpoints
Создать окно Breakpoints (Точки останова) можно с помощью команды ViewіBreakpoints (ОбзоріТочки останова) основного меню. Это дает вам способ выбора и установки условий, при которых срабатывает точка останова. Это окно можно использовать для добавления н
овых точек останова, отмены (удаления) точек останова и изменения существующих точек останова. 
     Й[ю]НBreakpointsНННННННННННННННННННННННН3ННН[][]Н»
     є TPDEMO.220 є Breakpoint                          є
     є TPDEMO.225 є Always                              є
     є±TPDEMO.226±є Enabled                             є
     є            є                                     є
     є            є                                     є
     є            є                                     є
     ИІ°°°°°°°°°°НННННННННННННННННННННННННННННННННННННЅ
Рис. 7.1 Окно Breakpoints
В окне Breakpoints (Точки останова) имеется две области. В левой области (список точек останова) показан список всех адресов, где установлены точки останова. В правой области (подробная информация о точках останова) показаны подробные данные по текущим (
подсвеченным в левой области) точкам останова. Локальное меню, которое можно получить по нажатию клавиш Alt-F10, имеется только в области списка точек останова. 
Локальное меню окна Breakpoints
Команды данного меню позволяют вам добавлять новые точки останова, отменять существующие или изменять характер поведения имеющихся точек останова. 
             ЪДДДДДДДДДДДДДДДДДДДДДї
             і Set Options...      і       Задать параметры
             і Add...              і       Добавить
             і Remove              і       Удалить
             і Delete all          і       Удалить все
             і Inspect             і       Проверить
             АДДДДДДДДДДДДДДДДДДДДДЩ
Локальное меню окна Breakpoins (Точки останова) выводится при нажатии клавиш Alt-F10. Если разрешено использовать сокращения с клавишей Ctrl, то для непосредственного доступа к команде этого меню можно нажать клавишу Ctrl совместно с первой буквой нужной
 команды. 
Команда Set Options...
Команда Set Options... (Установить параметры) открывает диалоговое окно, в котором содержится два набора многопозиционных переключателей, одно поле ввода и одно поле проверки. В этом диалоговом окне вы можете: 
- определить, что произойдет при срабатывании точки останова, подсвеченной в области списка точек останова;
- управлять условиями, при которых срабатывает точка останова;
- задавать, сколько раз будет выполняться данное действие перед тем, как точка останова сработает;
- разрешить или запретить точку останова;
- установить или изменить адрес точки останова;
- сделать точку останова глобальной.
     Й[ю]ННННННННННННННBreakpoint optionsННННННННННННННННННННН»
     є Address                                                є
     є  TPDEMO.223                         [ ] Global   OK    є
     є                                                 ±±±±±± є
     є Action                     Condition                   є
     є   ( ) Break                () Always           Cancel є
     є   () Execute              ( ) Changed Memory   ±±±±±± є
     є   ( ) Log                  ( ) Expression true         є
     є                                                 Help   є
     є                                                 ±±±±±± є
     є Action expression          Condition expression        є
     є                                         є
     є Pass count                                             є
     є  1                         [ ] Breakpoint disabled     є
     ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННЅ
Рис. 7.2 Диалоговое окно Breakpoint Options
Breakpoint options - параметры точки останова; Address - адрес; Action - действие; Condition - условие; Action expression - выражение действия; Condition expression - выражение условия; Breakpoint disabled - точка останова запрещена; not avaliable - недо
ступно; OK - выбор; Cancel - отмена; Help - справка. 
Селективный переключатель Action (Действие) можно установить в одно из трех значений: 
Break
Значение Break (Останов) приводит к тому, что при срабатывании точки останова программа останавливается. Экран Турбо отладчика TDW будет выведен заново, и вы можете вводить команды для просмотра структур данных программы. 
Execute
Значение Execute (Выполнить) приводит к выполнению выражения (выражение запрашивается в виде ответа на подсказку). Выражение должно иметь некоторые побочные эффекты, например, присваивание значения переменной. Эта возможность позволяет вам включить выраж
ение, которое будет выполняться перед кодом вашей программы в строке с текущим номером. 
Log
Значение Log (Регистрация) приводит к тому, что значение выражения будет записано в окне Log. Вам выводится подсказка. В ответ на нее вы должны ввести выражение. Будьте аккуратны, чтобы выражение не имело никаких неожиданных побочных эффектов. Подробнее 
побочные эффекты выражений описываются в Главе 9. 
Селективный переключатель Condition имеет три установки: 
Always
Значение Always (Постоянно) показывает, что для срабатывания точки останова не требуется проверять истинности дополнительных условий. 
Changed Memory
Значение Changed Memory (Изменение памяти) позволяет отслеживать переменную в памяти или объект и приводит к срабатыванию точки останова при изменении этого объекта. Вам выводится подсказка для ввода выражения, соответствующего наблюдаемому объекту, и чи
сло наблюдаемых объектов. Общее число байт в области памяти представляет собой размер объекта, на которое ссылается выражения, умноженный на число объектов. Например, введете: 
(longint)a,4
При этом наблюдаемая область будет иметь размер 16 байт, так как длина LongInt равна 4 байтам, и вы указали, что хотите наблюдать 4 объекта. 
Если вы присоедините данное условие к глобальное точке останова, то ваша программа будет выполняться существенно медленнее, так как область памяти потребуется проверять на изменение после каждого выполнения строки исходного текста. 
Задав данное условие для точки останова по определенному адресу, вы не потеряете в скорости выполнения при обработке глобальных точек останова и сможете проверить переменную при каждом выполнении конкретной строки кода. 
Expression True
Значение Expression True (Выражение истинно) позволяет задать срабатывание точки останова, когда выражение принимает истинное значение (становится ненулевым). Для ввода выражения, которое будет вычисляться при каждом при каждом обнаружении заданного дейс
твия вам выводится подсказка. 
Поле ввода Pass Count... (Счетчик проходов...) задает, сколько раз данное действие должно быть обнаружено перед тем, как оно сработает. Значение счетчика уменьшается только в том случае, если соответствующее точке останова условие принимает истинное знач
ение. Это означает, что если наряду с условием установили счетчик проходов, то точка останова сработает, когда условие n-ый раз примет истинное значение. 
Команда Add...
Команда Add... (Добавление) открывает диалоговое окно, аналогичное диалоговому окну Set Options (Установка параметров). В поле ввода Address (Адрес) вы должны ввести адрес. 
Добавить точку останова можно также начав вводить адрес, по которому вы хотите ее установить. При этом, так же, как и при использовании команды Add, выводится окно подсказки. 
Когда вы добавите точку останова, для модификации ее поведения можно использовать другие команды локального меню. Когда вы в первый раз добавляете точку останова, счетчик прохода для нее установлен в значение 1, условие - в Always (Постоянное), а действи
е - в Break (Остановка программы). 
Команда Remove
Команда Remove (Удаление) удаляет текущую (подсвеченную) точку останова. 
Команда Delete All
Команда Delete All (Удалить все) удаляет все точки останова, как глобальные, так и установленные по конкретным адресам. Если вы хотите, чтобы ваша программа останавливалась на точках останова, вам придется задать другие точки останова. 
Команда Inspect
Команда Inspect (Проверка) выводит строку исходного кода или инструкцию Ассемблера, соответствующую записи текущей (подсвеченной) точки останова. Если точка останова задана по удресу, соответствующему исходной строке программы, то будет открыто (и устано
влено на данную строку) окно Module (Модуль). В противном случае будет откроется CPU (Центральный процессор), в котором область кода будет установлена на инструкцию, где задана точка останова. 
Эту команду можно вызвать также, нажав клавишу Enter, если подсветка позиционирована на точке останова. 
Окно Log
Окно Log (Регистрация) можно создать, выбрав команду ViewіLog (ОбзоріРегистрация). Это окно позволяет вам просмотреть список значащих событий, которые имели место во время сеанса отладки. 
     Й[ю]НLogНННННННННННННННННННННННННН3НН[][]НН»
     єAt MCINPUT.124                              
     єBreakpoint at TPDEMO.220                    І
     єBreakpoint at TPDEMO.220                    °
     єBreakpoint at TPDEMO.220                    °
     єBreakpoint at TPDEMO.220                    °
     єBreakpoint at TPDEMO.220                    °
     єBreakpoint at TPDEMO.220                    °
     єBreakpoint at TPDEMO.220                    °
     єWe are now entering procedure Params...     °
     єBreakpoint±at±TPDEMO.180±±±±±±±±±±±±±±±±±±±±
     ИІ°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°ДЩ
Рис. 7.3 Окно Log
В окне Log (Регистрация) выводится пролистываемый список строк (вывод в окно). Если зарегистрировано более 50 строк, то самые старые строки списка теряются. Для настройки числа строк используйте параметр командной строки при запуске Турбо отладчика TDW и
ли измените это число с помощью программы установки TDWINST. С помощью команды локального меню Open Log File (Открыть файл регистрации) можно сохранить всю регистрацию, записывая ее непрерывно в файл на диске. 
Перечислим, какие причины могут вызвать запись строк в протокол регистрации: 
   - Ваша программа остановилась по заданному адресу. Адрес ее останова регистрируется.
   - Вы дали команду локального меню Add Comment (Добавить комментарий). Выводится подсказка, по которой нужно ввести комментарий, регистрируемый в протоколе.
   - Срабатывает точка останова, которая регистрирует значение выражения. Это значение помещается в протокол регистрации.
   - Вы использовали команду WindowіDump Pane To Log (ОкноіВывод области в протокол регистрации) (из основного меню) для записи текущего содержимого области окна.
   - Вы используете команду Display Window Info локального меню окна Log для записи в протокол информации о глобальной динамически распределяемой области памяти, информации о локальной динамически распределяемой области или списка модулей.
   - Вы ViewіWindows Messages (ОбзоріСообщения Windows) для вывода окна Windows Messages, и теперь находитесь в локальном меню области Messages этого окна. Вы переключаете параметр Send to Log Window в значение Yes (да), чтобы все приходящие в данное окн
о сообщения также отображались в Log. 
Локальное меню окна Log
Команды данного меню позволяют вам управлять записью протокола регистрации в файл на диске, останавливая и начиная регистрацию, добавляя в протокол регистрации комментарий, и очищая протокол. 
Локальное меню окна Log (Регистрация) выводится при нажатии клавиш Alt-F10. Если разрешено использовать сокращения с клавишей Ctrl, то для непосредственного доступа к команде этого меню можно нажать клавишу Ctrl совместно с первой буквой нужной команды. 

                               ЪДДДДДДДДДДДДДДДДДДДДї
     Открыть файл регистрации  і Open log file...   і
     Закрыть файл регистрации  і Close log file     і
     Регистрация               і Logging        YES і
     Добавить комментарий      і Add comment...     і
     Стереть файл регистрации  і Erase log          і
     Вывести информацию        і Display Windows Infі
      Windows                  АДДДДДДДДДДДДДДДДДДДДЩ
Команда Open Log File...
По команде Open Log File... (Открыть файл регистрации...) все строки, записываемые в протокол регистрации, записываются также в файл на диске. Вам выводится подсказка с запросом имени файла, в который нужно записывать протокол регистрации. 
Когда вы открываете файл регистрации, в него записываются все строки, которые уже выведены на экран в окне регистрации. Это позволяет вам открыть файл на диске после того, как вы увидите что-то вас интересующее и захотите записать это на диск. 
Если вы хотите начать регистрацию на диске, не включая в нее строки, которые уже выведены на экран, то перед выбором команды Open File Log (Открыть файл регистрации) выберите сначала команду Erase Log File (Стереть файл регистрации). 
Команда Close Log File
Команда Close Log File (Закрыть файл регистрации) останавливает запись строк в файл регистрации, заданный в команде локального меню Open Log File (Открыть файл регистрации). Данный файл закрывается. 
Команда Logging
Команда Logging (Регистрация) разрешает или запрещает регистрацию, управляя выводом в окно Log (Регистрация). 
Команда Add Comment
Команда Add Comment (Добавить комментарий) позволяет вам включить в регистрируемую информацию комментарий. В ответ на подсказку можно ввести строку текста, которая может содержать столько символов, сколько вам требуется. 
Команда Erase Log
Команда Erase Log (Стереть регистрацию) очищает список регистрации. Окно Log (Регистрация) заполняется пробелами. Это не влияет на запись регистрации в файл на диске. 
Команда Display Windows Info
Данная команда выводит окно диалога Windows Information (Информация Windows), позволяющий получить информацию о глобальной и локальной динамически распределяемой области памяти или списке модулей, входящих в вашу прикладную программу. Это средство описан
о подробнее в Главе 11. 
Простые точки останова
Одна из наиболее простых операций, которую вам потребуется выполнять при отладке программы, состоит в остановке программы перед тем, как будут выполнены определенные участки кода. 
Есть несколько способов установить точку останова. Каждый из них удобно использовать в определенных обстоятельствах. 
1. Переместите курсор на нужную строку исходного кода (в окне Module) и дайте команду BreakpointsіToggle (Точки остановаіПереключение) или нажмите клавишу F2. Если дать эту команду на строке, где уже имеется точка останова, то эта точка останова будет уд
алена. 
2. Переместитесь к инструкции в области Code (Код) окна CPU (Центральный процессор) и дайте команду BreakpointsіToggle (Точки остановаіПереключение) или нажмите клавишу F2. Если дать эту команду на строке, где уже имеется точка останова, то эта точка ост
анова будет удалена. 
3. Дайте команду BreakpointsіAt (Точки остановаіПо адресу...) и введите адрес кода, по которому требуется установить точку останова. 
4. Из области списка точек останова окна Breakpoints (Точки останова) дайте команду локального меню Add (Добавить) и введите адрес кода, по которому вы хотите установить точку останова. 
Условные точки останова и счетчики проходов
Есть много случаев, когда нежелательно, чтобы точка останова срабатывала при каждом выполнении данной строки исходного кода, особенно если эта строка кода выполняется многократно, прежде чем возникнет интересующая вас ситуация. Турбо отладчик TDW дает ва
м два способа задать момент срабатывания точки останова. Для этого используются счетчики прохода и условия. 
Если вы хотите остановить вашу программу, например, на десятом вызове функции, то можно установить в начале функции точку останова и использовать поле вводе Pass Cоunt (Счетчик прохода) в диалоговом окне Breakpoints Options (Параметры точки останова), ко
торое задает, сколько раз вы хотите пропустить точку останова, прежде чем она сработает. 
Если вы хотите остановить программу по заданному адресу, но только в случае удовлетворения определенного условия, то с помощью переключателя Expression True (Выражение истинно) диалогового окна Breakpoint Options вы можете задать определяющее это условие
 выражение. Каждый раз, когда встречается данная точка останова, выражение будет вычисляться, и если оно истинно (имеет ненулевое значение), то точка останова срабатывает. Это можно использовать в сочетании со счетчиком прохода, чтобы точка останова сраб
атывала только после того, как выражение примет истинное значение заданное число раз. 
Для задания точки останова, которая срабатывает только после того, как элемент данных изменит свое значение, можно использовать селективный переключатель Changed Memory (Изменения памяти). Это может оказаться значительно более эффективным, чем задание гл
обальной точки останова, которая отслеживает все изменения. Если вы хотите отслеживать только определенные изменения, когда будет достигаться заданный оператор исходного кода, это уменьшит объем обработки, который Турбо отладчик TDW выполняет, чтобы обна
ружить изменение. 
Глобальные точки останова
Если вы хотите, чтобы точка останова срабатывала при каждом выполнении инструкции или строки исходного кода, используйте глобальную точку останова. Задать глобальную точку останова можно несколькими способами, при этом каждый метод лучше подходит для кон
кретной ситуации. 
1. В диалоговом окне Breakpoints Options (Параметры точки останова) выберите окно проверки Global (Глобальные). Используйте этот метод, когда вы хотите задать определенное условие и/или счетчик прохода, или когда вы хотите сделать что-либо другое, а зате
м остановиться при срабатывании точки останова. 
2. Из основного меню выберите команду BreakpointsіChanged Memory Global (Точки остановаіИзмененная память). Это можно использовать для остановки при изменении определенной области памяти. 
3. Выберите из основного меню команду BreakpointsіExpression True (Точки остановаіВыражение истинно). Эту команду можно использовать, чтобы приостановить выполнение программы, когда выражение становится истинным. 
После задания глобальной точки останова для модификации условия или действия используется обычно локальное меню в окне Breakpoints (Точки останова). В противном случае глобальная точка останова будет срабатывать на каждой строке исходного кода, то есть р
езультат будет аналогичен выполнению команды основного меню RunіTrace (ВыполнениеіТрассировка). 
Для того, чтобы ваши глобальные точки останова проверялись всякий раз перед выполнением строки исходного кода, убедитесь, что вашим текущим окном при перезапуске программы с помощью одной из команд Run (Выполнение) основного меню (или эквивалентных им фу
нкциональных клавиш) не является окно CPU (Центральный процессор). 
Для того, чтобы ваши глобальные действия проверялись при выполнении каждой инструкции, убедитесь, что текущим окном при перезапуске программы является окно CPU. 
Предупреждение: Глобальное действие будет происходить на каждой строке или инструкции исходного кода. Используйте глобальную точку останова, когда вы хотите определить точно, когда изменяется данная переменная или когда данное условие принимает истинное 
значение. 
Глобальные точки останова несколько замедляют выполнение программы. Однако они могут оказаться очень удобными для определения того, где ваша программа работает с данными. 
После добавления глобальной точки останова вы должны задать также условие, при котором она будет срабатывать. 
Остановка при изменении объектов данных
Когда вы хотите определить, где в вашей программе изменяются определенные объекты данных, сначала с помощью одного из методов, описанных в предыдущем разделе, установите глобальную точку останова. Затем можно использовать селективный переключатель Change
d Memory (Измененная память) диалогового окна Breakpoint Options (Параметры точки останова). Введите выражение, ссылающееся на область памяти, которую вы хотите отслеживать и необязательный счетчик числа отслеживаемых объектов. 
Когда вы дадите эту команду, ваша программа будет выполняться медленно. Перед использованием данного метода может оказаться более желательным локализовать проблему, определив точный адрес, где изменяется элемент данных. 
Регистрация значений переменных
Иногда может оказаться полезным регистрировать значения определенных переменных каждый раз, когда вы достигаете определенного места программы. Вы можете регистрировать значение любого выражения, включая, например, значения параметров при вызове функции. 
Просматривая регистрацию при каждом вызове функции, вы можете определить, когда она вызывается с неверными параметрами. 
Примечание: По каждому адресу можно установить только одну точку останова. 
Выберите селективный переключатель Log (Регистрация) диалогового окна Breakpoint Options (Параметры точки останова). В ответ на выводимую подсказку введите выражение, значение которого должно регистрироваться при каждом срабатывании точки останова. Если 
вы хотите регистрировать значение нескольких переменных, нужно установить несколько точек останова. 
Выполнение выражений
С помощью выполнения при каждом срабатывании точки останова имеющего побочные эффекты выражения вы можете "включать" перед данной строкой новые фрагменты кода. Это может оказаться полезным, когда вы хотите изменить в целях тестирования или коррекции ошиб
ки поведение программы. Это позволяет вам при проверке минимальных изменений в программе избежать цикла компиляции и отладки. 
Конечно, данный метод ограничен включением выражения перед уже существующей строкой исходного кода. Его нельзя использовать для непосредственной модификации имеющегося кода. 


Яндекс цитирования