adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Turbo Debugger 3.0 #3-3
Автор ""
Размер 414526 Байт
Страница 13 из 43
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

       ViewіWatches (ОбзоріПросмотр),  то вы увидите,  что оно  остается
       равным  -1 при пошаговом прохождении программы.  Это так и должно
       быть, поскольку нарисовать что-либо вы не имели возможности.

                              Нахождение ошибки
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            Теперь, если  вы обратитесь к книге Чарльза Петцольда "Прог-
       раммирование  для   Windows"   ("Charles   Petzold,   Programming
       Windows"),  то причина ошибки станет вам ясна.  Минимальная реак-
       ция,  которая нужна Windows в ответ на сообщение WM_PAINT, должна
       состоять в вызове BeginPaint,  за которым следует EndPaint.  Если
       эти подпрограммы не вызываются, то Windows не знает, что было по-
       лучено  сообщение WM_PAINT,  и продолжает посылать WM_PAINT прог-
       рамме.

            Обратите внимание,  что вызов  BeginPaint  находился  внутри
       оператора if,  и подпрограмма при первой прорисовке экрана не вы-
       зывалась. Чтобы решить проблему, вы должны вынести оператор с вы-
       зовом BeginPaint за пределы условного оператора if.

            Как обстоит  дело  с оператором EndPaint?  Он тоже находится
       внутри if, вместе с вызовом подпрограммы ReleaseDC, которая осво-
       бождает hdc,  логический  номер (описатель) контекста устройства,
       устанавливаемый вызовом BeginPaint.  Эти две строки должны  нахо-
       диться вне конструкции if.

                             Завершение BCWDEMOA
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            В BCWDEMOB,  второй версии программы, которую вы будете изу-
       чать,  ошибка,  связанная с WM_PAINT,  уже исправлена. Прежде чем
       загружать эту программу,  нужно завершить работу BCWDEMOA,  чтобы
       освободить используемые ей ресурсы.  Поскольку единственная проб-
       лема с этой программой состояла в том,  что при первом проходе не
       выполнялся  код  внутри оператора if,  установка CurrentPointer в

       TDeb 3.0 #3-3                = 56 =

       ноль приведет к выполнению этого кода,  что  позволяет  нормально
       выйти из программы.  Для завершения программы выполните следующие
       шаги:

            1. В окне Windows Messages (Сообщения Windows)  уберите  имя
               оконной  процедуры WndProc в левой верхней области, чтобы
               программа  не  была  прервана  при  получении   сообщения
               WM_PAINT.

            2. Нажимайте F7, пока на дисплее не появится следующая стро-
               ка:

                         if (Currentpointer >= 0)

            3. Выделите  CurrentPoint,  затем  нажмите  клавиши Ctrl-F4,
               чтобы перейти к экрану Evaluate/Modify  (Вычисление/Моди-
               фикация).

            4. Выберите Eval (Вычисление).

            5. Поместите  курсор  на  поле ввода New Value (Новое значе-
               ние),  введите 0,  а затем выберите Modify (Модификация),
               чтобы изменить значение переменной. Теперь при выполнении
               программы оператор if при вычислении условия даст  значе-
               ние True,  а  BeginPaint  и  EndPaint будут выполнены при
               первом же проходе.

            6. Выберите клавишу F9 для выполнения программы.

            7. Выберите Quit для выхода из программы.  Чтобы эта команда
               сработала,  вам  может понадобиться нажать клавишу,  пос-
               кольку Windows может отказаться освободить сообщения вво-
               да от "мыши" из системной очереди.  Нажатие клавиши осво-
               бодит из очереди все находящиеся там в текущий момент со-
               общения ввода от "мыши".

                              Отладка BCWDEMOB
       ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

            Завершив работу  программы  BCWDEMOA,  вы  можете  загрузить
       программу BCWDEMOB.  Когда программа появится на экране,  нажмите
       для  ее  запуска  клавишу  F9,  и попробуйте немного поработать с
       программой.

            Если вы нарисовали большое число объектов,  и  особенно  при
       интенсивном перемещении  "мыши" при нажатой кнопке,  вы увидите в
       конце-концов, что с программой начинают происходить странные  ве-
       щи. Сначала вы сможете заметить,что программа стала медленнее ра-
       ботать,  а затем объекты исчезают или изменяется цвет или толщина
       линий,  а экраны перемешиваются.  И наконец,  все зависает, и вам
       приходится перезагружаться аппаратным образом.

            Наиболее вероятная причина состоит в ошибочном использовании

       TDeb 3.0 #3-3                = 57 =

       памяти. Чтобы проверить, так ли это, и найти местоположение ошиб-
       ки,  повторите загрузку Windows,  выполните только менеджер прог-





рамм и TDW, если это возможно (чтобы минимизировать использование памяти), и загрузите BCWDEMOB и TDW снова. Переключение из программы ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Прежде чем продолжить сеанс отладки, может потребоваться ор- ганизовать отладку таким образом, чтобы не использовать Ctrl-Alt-SysRq для переключения из перекладной программы в TDW, поскольку использование данного метода требует осторожности. Ре- шение состоит в том, чтобы установить единственное сообщение, по которому должно выполняться прерывание, и которое вы по своему желанию можете генерировать в программе, и которое обычно само по себе не появляется. Так как BCWDEMO - это работающая с "мышью" графическая прог- рамма, не принимающая графического ввода, то работа с клавиатурой здесь обычно не нужна. Следовательно, лучше всего организовать прерывание по сообщению WM_KEYFIRST. После задания этого сообще- ния в окне ViewіWindows Message (ОбзоріСообщения Windows) прог- рамма будет прерываться при каждом нажатии клавиши. (Поскольку программа не реагирует и на нажатие правой кнопки "мыши", для этой цели можно использовать и сообщение WM_RBUTTONDOWN). Тестирование программы ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Теперь вы можете нажать клавишу F9, чтобы начать выполнение программы BCWDEMOB. Прежде чем сделать что-либо в программе, про- верьте, какой процент системной памяти доступен программам для Windows, переключившись на менеджер программ, выбрав "кнопку" Help (Справка) и затем выбрав About Program Manager (О менеджере программ). Появится информационный блок, в котором будет показана текущая версия Windows, объем свободной памяти и в нижней части - интересующие вас статистические данные, процентные соотношения свободной памяти для системных ресурсов. Теперь вернемся в программа Simple Paint и немного порисуем. Затем снова перейдем на экран About Program Manager (О менеджере программ), и вы увидите, что доступная память для системных ре- сурсов уменьшилась. Если вы и дальше продолжите рисование, то объем этой памяти будет продолжать уменьшаться до нуля, и вы по- лучите тот же эффект, что и ранее. Принятие решения ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Что вам известно в данный момент? Прежде всего, программа явно распределяет глобальную память, так как она в результате расходует все системные ресурсы, доступные Windows. С этого можно начать: вы можете перезагрузить программу, воспользоваться средс- TDeb 3.0 #3-3 = 58 = твами TDW контроля глобальной памяти для сохранения списка объек- тов глобальной памяти в файл регистрации (протокол), немного по- рисовать в Simple Paint и затем снова получить список объектов глобальной памяти, записав его в другой файл. Так как Windows за это время, вероятно, перемещала объекты в памяти, то два полученных списка могут не совпадать. Вы должны просмотреть каждый объект в списке и сопоставить его с объектами, имеющими того же владельца в другом списке, чтобы найти несоот- ветствия. Поскольку этот метод занимает много времени, то предлагается он только как упражнение по просмотру глобальной памяти. Метод, которым вы будете пользоваться фактически, состоит в том, чтобы просмотреть объекты памяти, выделяемые программой, и проверить, выполняет ли программа и их освобождение. Сравнение списков объектов глобальной памяти ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Для получения списка объектов глобальной памяти нужно выпол- нить следующие действия: 1. Перезапустите Windows, чтобы обеспечить очистку глобаль- ной памяти от любых объектов, выделенных BCWDEMOB. И опять, избегайте запускать ненужные программы, чтобы уменьшить число объектов глобальной памяти. 2. Если вы находитесь в TDW и загрузили BCWDEMOB, снова установите прерывание программы по сообщению WM_KEYFIRST. 3. Нажмите клавишу F9 для запуска программы, а затем нажмите клавишу для выхода обратно в TDW. 4. Выберите команду ViewіLog (ОбзоріРегистрация) и вызовите локальное меню. 5. Выберите команду Open LogіFile (Открыть файліРегистра- ция), введите в появившемся окне диалога имя файла журна- ла и нажмите клавишу Enter. 6. Снова вызовите локальное меню окна Log (Регистрация), вы- берите команду Display Windows Info (Вывод информации Windows), а затем нажмите клавишу Enter, когда появится окно диалога Windows Information (Информация Windows). Нажатие Enter принимает установки по умолчанию, задающие вывод списка объектов глобальной памяти, начиная с верх- них адресов памяти.


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.