Что такое отладка процессора

Обновлено: 07.07.2024

В жизненном цикле микропроцессорной системы выделяются три основных этапа: проектирование, изготовление и эксплуатация . Для поддержания микропроцессорной системы в работоспособном состоянии необходимо учитывать как специфику каждого этапа ее жизненного цикла , так и особенности МПС как объекта контроля.

Прежде всего, рассмотрим некоторые основные понятия, связанные с контролем и диагностикой цифровых вычислительных устройств.

Процедура проверки правильности функционирования объекта называется контролем или тестированием. В результате контроля определяется, находится ли объект в исправном состоянии. Если объект находится в неисправном состоянии, то возникает задача поиска неисправности - диагностирования. Процесс устранения найденных неисправностей называется отладкой.

Рассмотрим в первую очередь особенности МП БИС и микропроцессорной системы в целом как объекта контроля, которые затрудняют процедуру контроля и поиска неисправностей.

Высокая сложность БИС. Полная проверка схемы должна обеспечивать проверку ее работоспособности при всех возможных состояниях.

Число возможных состояний определяется количеством внутренних элементов памяти. Взяв для примера только регистровую память однокристального микроконтроллера (32 регистра по 8 разрядов), получим 2 256 состояний. Для полного их перебора с частотой 100 МГц потребуется время порядка 1067 лет! Очевидно, что такой вариант неприемлем и никогда на практике не реализуется. Следовательно, любая МП БИС может содержать неисправности. Самое неприятное в этой ситуации то, что эти неисправности носят характер сбоев, то есть проявляются только при определенном сочетании данных внутри БИС, и поэтому весьма трудно поддаются выявлению.

Аналогичная ошибка была выявлена в конце 2007 года в четырехъядерных серверных процессорах Barcelona, а также в чипах Phenom для настольных компьютеров компании AMD . Она была связана с особенностями реализации буфера быстрого преобразования адреса ( TLB ) кэш-памяти третьего уровня. Ошибка в отдельных ситуациях приводила к зависанию системы.

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

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

Обычно требуется регистрация и анализ сигналов на протяжении значительного временного интервала и в связи с редкими и однократными событиями. К числу таких событий, идентификация которых необходима в процессе контроля, относится появление заданных комбинаций сигналов на шинах МПС и даже появление заданной последовательности таких комбинаций: обращение по определенному адресу на запись определенных данных, появление сигнала запроса прерывания определенного типа или даже сигнал помехи . При наступлении такой ситуации следует проанализировать, а следовательно, предварительно запомнить состояние шин на протяжении как нескольких предшествующих тактов, так и нескольких тактов, которые следуют за указанным событием. В то же время для МПС на основе однокристальных микроконтроллеров и ЦСП эта проблема не столь остра, так как реализация большинства функций системы осуществляется внутренними средствами этих микропроцессоров . Поэтому такие системы имеют малое число периферийных схем, а обмен между ними и микропроцессором часто выполняется по последовательным интерфейсам .

Наряду с имеющимися трудностями в процессе контроля и отладки микропроцессорная система имеет ряд достоинств, облегчающих этот процесс.

Вот ты все кодишь, кодишь, отлаживаешь,
отлаживаешь . Стоп! А задумывался ли ты как
работает отладчик? Нет? Тогда слушай.
Начнем с того, что все семейство отладчиков
делится на отладчики приложений и
отладчики ядра. Различие в их реализации,
как правило, заключается в том, что
отладчики приложений используют Debugging API ОС
(функции, структуры), а отладчики ядра -
непосредственно отладочные возможности
процессора (регистры, команды). Очевидно,
что отладчики приложений проще в
реализации, посему с них и начнем.

Отладчики приложений

Описывать я буду Windows Debugging API. Итак, для
того, чтобы начать отладку, поток-отладчик
должен запустить отлаживаемый процесс так,
чтобы ОС знала о том, что запускаемый
процесс будет находиться под отладкой. Для
этого надо запустить отлаживаемую
программу функцией CreateProcess с параметром
dwCreationFlag равным DEBUG_ONLY_THIS_PROCESS (или DEBUG_PROCESS,
если отладчик может отлаживать несколько
процессов одновременно). Теперь отладчик
должен войти в т.н. цикл отладки. Для этого
надо войти в цикл, вызывая функцию WaitForDebugEvent
( while(WaitForDebugEvent(. )==1) ) и после завершения
обработки какого-либо события отладки
вызывать ContinueDebugEvent. Итак, обобщенная схема
работы отладчика:

CreateProcess("путь_к_отлаживаемой_проге". DEBUG_ONLY_THIS_PROCESS. );
while(WaitForDebugEvent(. )==TRUE)
обрабатываем_события(см.далее)
.
.
.

Да, кстати, выше я сказал ПОТОК-отладчик -
это важно (Microsoft recommendation :), чтобы цикл
отладки, описанный выше находился в
отдельном потоке отладчика. Иначе отладчик
будет виснуть во время ожидания событий
отладки. Но это важно для серьезных
отладчиков, а на пока можно этим не
заморачиваться (это тебе так, на будущее).
Теперь нам надо научиться получать события
отладки. Для этого в Win DAPI есть структура
DEBUG_EVENT (посмотри SDK, описывать не буду, т.к.
структура не из маленьких). Указатель на эту
структуру передается первым параметром
функции WaitForDebugEvent, а она в свою очередь
заполняет ее интересной для нас
информацией. Само событие отладки, которое
нужно/можно обрабатывать будет в элементе
DEBUG_EVENT dwDebugEventCode. Итак какие существуют
события отладки:

При возникновении событий отладки
существует множество нюансов, не описанных
мной. Например CREATE_PROCESS_DEBUG_EVENT и
CREATE_THREAD_DEBUG_EVENT возникают ПЕРЕД тем как
процесс или поток начнут выполняться.
Почитай более подробно в MSDN, т.к. сегодня мы
создаем ОЧЧЧЕНЬ простой отладчик.

Ну вот, кое-что уяснили, теперь напишем что-то
похожее на отладчик:

Вот и все. Компиляй, запускай. Я думаю ты
догадался, что в качестве параметра этому
отладчику следует передать путь к
отлаживаемой программе. Теперь ты знаешь
примитивнейшие основы работы отладчика
приложений под Win. Написанный в качестве
примера отладчик даже не столько отладчик,
сколько прога, отображающая события
отладки. Для создания настоящего отладчика
требуется большое усердие и желание. Если
тебя заинтересовала эта тема, прочти, что
написано об отладке в MSDN и вперед!

Отладчики ядра

Плавно подходим к отладчикам ядра.. Оооооо!
Это очень интересно и настолько же сложно.
Как я уже говорил, отладчики ядра
используют ресурсы процессора. Сразу скажу,
что я ограничусь описанием этих ресурсов и
описанием их использования. Примера проги
не будет 🙁 В современных процах Intel (и
совместимых с ними), начиная с 80386 нам
доступны 8 отладочных регистров (DR0-DR7),
позволяющие ставить контрольные точки на
чтение/запись областей памяти и портов
ввода/вывода (начиная с Pentium). И это круто,
скажу я тебе! Всего контрольных точек
только четыре 🙁 Ну ладно, рассмотрим
отладочные регистры DR0-DR7. Наиболее важным
из них является DR7, т.к. именно он является
управляющим регистром отладки, позволяющим
координировать работу точек останова. Да,
кстати все восемь отладочных регистров 32-битные.
Рассмотрим подробнее регистр DR7:

биты 31-30 : поле LEN для т/о (точки останова) 3
биты 29-28 : поле R/W для т/о 3
биты 27-36 : поле LEN для т/о 2
биты 25-24 : поле R/W для т/о 2
биты 23-22 : поле LEN для т/о 1
биты 21-20 : поле R/W для т/о 1
биты 19-18 : поле LEN для т/о 0
биты 17-16 : поле R/W для т/о 0

поле LEN задает длину т/о:
00 - 1 байт
01 - 2 байта
10 - 3 байта
11 - 4 байта

поле R/W задает условие срабатывания т/о:
00 - исполнение команды
01 - запись данных
10 - обращение к порту ввода/вывода (если 3-й
бит регистра CR4 равен 1), иначе не определено
11 - чтение/запись

биты 15-14 : 0-0 (равны нулю)
бит 13 : при его установке любое обращение к
отладочным регистрам (даже из 0 кольца)
вызывает исключение
биты 12-10 : 0-0-1
биты 9-8 : 1-1 (а здесь уже Intel recommendation 🙂
бит 7 : 1 - включить т/о 3
бит 5 : 1 - включить т/о 2
бит 3 : 1 - включить т/о 1
бит 1 : 1 - включить т/о 0
биты 8,6,4,2,0 : то же, что и 7,5,3,1, но сбрасывается
при каждом переключении задачи (актуально
для защищенного режима, в реальном режиме
эти пары регистров равноценны)

Регистры DR0-DR3 задают линейные адреса
четырех точек останова (0-3 соответственно).
Тут есть некоторые пометки: если размер т/о -
слово, то адрес толжен быть четным,
если двойное слово, то адрес должен быть
кратный четырем.
И наконец регистр DR6 отображает состояние
отладки:

биты 31-16 : все выставить в единицу
бит 15 : если 1, то исключение вызвано
переключением задач (опять же, актуально
для защищенного режима)
бит 14 : устанавливается при трассировке
бит 13 : устанавливается, если следующая
команда обращается к любому отладочному
регистру (бит 13 регистра DR7 должен быть
установлен)
бит 12 : 0
биты 11-4 : единицы
бит 3 : сработала т/о 3
бит 2 : сработала т/о 2
бит 1 : сработала т/о 1
бит 0 : сработала т/о 0

Ox-x-x, это тебе не Windows Debugging API 🙂

;Этот пример в Win не работает (и в DOS окне тоже)
mov eax, 0000000011000000110000010 ; длина т/о равна 1 байт,
ставим на чтение/запись памяти
mov ebx, 90000h ;адрес точки останова (кто прочтет/начнет
писАть - сразу пискнет)
mov dr7, eax
mov dr0, ebx

Отладчики же после установки т/о ждут
генерации int 0x1 при обращении к т/о и получая
управление творят беспредел 🙂 С портами все
точно так же, но надо сначала установить в
единицу 3-й бит регистра CR4, и задать адрес
порта в один из регистров DR0-DR3.

Из древних возможностей отладки можно
сказать о контрольных точках останова и
трассировке. Контрольная точка останова
реализуется с помощью опкода 0xCC. Встретив
его, процессор вызывает int 0x3 и запоминает в
стеке регистр флагов, регистр CS, регистр IP,
запрещает преревания (флаг FI в регистре
флагов устанавливается в 0), сбрасывает флаг
трассировки. После этого отладчик опять же
может делать с программой все что угодно. И
о трассировке. Она организуется установкой
флага TF (флаг трассировки) в единицу.
Установил TF в единицу, и процессор после
каждой команды будет вазывать int 0x1,
сохраняя в стеке регистр флагов и регистр IP
и очищая флаг TF. Хитрый отладчик
перехватывал исключение и - опять беспредел
🙂 Для отладки в реальном режиме процессора
отладчик должен был перехватывать
прерывания(исключения) 0x1 и 0x3 и
обрабатывать их по своему усмотрению. В
защищенном режиме в принципе все так же (в
смысле так же надо перехватывать 0x1 и 0x3), но
здесь при возникновении исключения
предоставляется больше информации, но
программировать в защищенном режиме
достаточно сложно. А уж в нулевом кольце
защиты Windows и подавно. Чуть не забыл сказать
об т.н. эмулирующих отладчиках. Эти
отладчики эмулируют выполнение команд
процессора отлаживаемой программы (ну и
регистры проца конечно эмулируют). С точки
зрения защиты от антиотладочного кода это
большое подспорье. Но и на эмулирующие
отладчики управа всегда найдется.

К чему пришли.

Ну вот, теперь ты знаешь, пусть примерно,
как работают отладчики. Да, кстати, SoftIce -
отладчик ядра, а так же единственный из них,
способный отлаживать используя один комп.
"Что значит один комп?" - спросишь ты. А
это значит что остальные известные
отладчики ядра ведут отладку "по модему",
т.е. отлаживаемая система вместе с ядром
отладчика на одном компе, а управление
ядром происходит по сети, другим компом. Вот
так-то. А как правило встроенные в средства
разработки отладчики - не что иное как
отладчики приложений, причем не самые
лучшие. Что же использовать, спосишь ты меня.
Да ты и сам знаешь - SoftIce 🙂 А еще неплохой
отладчик - WinDBG. Он идет вместе с PlatformSDK. Удачи
в ловле жуков!

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

Итак, переходим в «Настройки» и открываем пункт «Сведения о телефоне» → «Сведения о ПО».

Находим здесь пункт «Номер Сборки».

Для включения режима разработчика нажимаем на него 7 раз подряд. Система несколько раз оповестит нас о текущем этапе включения режима, после чего уведомит об активации.

Возвращаемся на предыдущую страницу настроек и видим, что в меню появился новый пункт «Параметры разработчика».

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

  • отладка;
  • сети;
  • ввод;
  • отрисовка (рисунок);
  • аппаратное ускорение отрисовки;
  • мультимедиа;
  • мониторинг;
  • приложения;
  • автозаполнение;
  • оформление;

Настройка графического ускорителя

Ускорить работу системы нам поможет настройка графического ускорителя.

Все приложения, в зависимости от разработчика, могут обрабатываться либо основным процессором, либо графическим ускорителем. С помощью режима разработчика мы можем принудительно зафиксировать устройство на обработку всех приложений с помощью графического ускорителя, тем самым разгрузить основной процессор при работе с приложениями.

Этот пункт находится в меню параметра «Аппаратное ускорение отрисовки», но в зависимости от версии Android и модели вашего устройства, может называться по-разному («Принудительная обработка GPU», «Обработка графическим процессором» или «Ускорение работы GPU»). Его задача – активировать принудительную отрисовку интерфейса приложений с помощью графического процессора.

Единственный недостаток этой функции – незначительное повышение расхода оперативной памяти при работе с приложениями. Но для большинства современных смартфонов, имеющих большой запас оперативной памяти, ради повышения плавности и скорости работы этим вполне можно пренебречь.

Второй пункт, ускоряющий систему – «Отключение аппаратного наложения», который также позволяет подключать ресурсы GPU при компоновке экрана, освобождая основной процессор.

Последний пункт меню параметра «Аппаратное ускорение отрисовки», позволяющий ускорить работу устройства – «Включение 4x MSAA» («Force 4xMSAA»). Настройка добавляет детализации на контурах, снижая рябь, благодаря чему картинка в играх становится более плавной.

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

Настройка анимации

Еще один пункт меню режима разработчика, с помощью которого можно ускорить работу смартфона – это настройка анимации в параметре «Отрисовка».

По умолчанию на всех Android устройствах пункты «Анимация окон», «Анимация переходов» и «Длительность анимации» установлены на значениях «1Х». Чтобы ускорить работу открытия окон, следует снизить это значение до 0,5 х или даже полностью выключить анимацию.

Этот лайфхак позволит вам снизить время перехода между окнами и вы сразу сможете ощутить разницу в скорости открытия приложений на вашем смартфоне.

Заключение

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

Компьютеры на базе Windows 10 поддерживают несколько способов запуска. Среднестатистические пользователи не придают этой опции значения, включая ПК в обычном режиме, когда доступны все основные службы. Но параллельно с этим существует режим отладки на операционной системе Windows 10, который может пригодиться опытным юзерам, желающим провести диагностику своего устройства.

Что такое режим отладки в Windows 10

Для определения того, что собой представляет данный режим, необходимо определить значение слова «отладка» («Debugging»). В сфере компьютерной техники ею называют процесс, позволяющий найти и устранить ошибки, связанные с работой ПК.

screenshot_1

Режим отладки позволяет решить массу проблем – от небольших сбоев Windows 10 до полного отказа от работы. Впрочем, к нему следует обращаться только опытным пользователям, которые способны найти объяснение каждому своему шагу. В остальных случаях, когда речь идет о новичке, исключать возможность применения режима тоже нельзя. Но в такой ситуации важно изучить инструкцию по активации Debugging и способах его применения на практике.

Как его включить?

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

screenshot_2

  • Перейдите в раздел «Обновление и безопасность», а затем – «Восстановление».

screenshot_3

  • Под заголовком «Особые варианты загрузки» нажмите на кнопку «Перезагрузить сейчас».

screenshot_4

На заметку. Также вы можете открыть дополнительное меню, зажав клавишу «Shift» при выборе варианта «Перезагрузка» в «Пуске».

В случае правильного выполнения указанных действий компьютер перезагрузится, а при следующем включении вы увидите синий экран с выбором действий. Можно нажать на кнопку «Продолжить», чтобы запустить ПК в стандартном режиме, но нас интересует Debugging, поэтому действуйте иначе:

  • Перейдите в раздел «Поиск и устранение неисправностей».

screenshot_5

  • Выберите «Дополнительные параметры», а затем – «Параметры загрузки».

screenshot_6

  • Найдите в списке пункт, отвечающий за отладку, и нажмите на клавишу, которая отвечает за ее активацию (как правило, это клавиша «F1»).

screenshot_7

После этого устройство включится вместе с отладочным окном, которое поможет выполнить различные манипуляции для диагностики и решения проблем. Также в рассматриваемом режиме любые ошибки сохраняются в виде отдельных файлов «логов», аналогичным образом помогающих установить причины неполадок и своевременно устранить их.

Возможные проблемы

  • Щелкните ПКМ по иконке «Пуск».
  • Откройте Командную строку с правами Администратора.
  • Введите запрос «bcdedit /set advancedoptions true».

screenshot_8

Следом произойдет перезапуск, и расширенные параметры откроются в принудительном порядке. Еще одна проблема связана с выходом из отладки. Чтобы компьютер включался в стандартной конфигурации, необходимо обработать запрос «deletevalue». Впечатать «bcdedit /deletevalue advancedoptions» в вышеупомянутой Командной строке или на появившемся синем экране выбрать опцию «Продолжить».

Читайте также: