УДОСТОВЕРЕН ЮФКВ.30074-01-УД МИКРОСХЕМА ИНТЕГРАЛЬНАЯ 1879ВМ2 ПАКЕТ СРЕДСТВ РАЗРАБОТКИ С/С++ ПРОГРАММ ДЛЯ ПРОЦЕССОРОВ NEUROMATRIX ДЛЯ ОПЕРАЦИОННЫХ ПЛАТФОРМ LINUX И WIN32 Отладчик для платформы Win32 Руководство программиста ЮФКВ.30074-01 33 03 (ЮФКВ.30074-01 33 03-001ФЛ) Листов 15 Литера Инв.N подл. Подп. и дата Взам.инв.N 2 ЮФКВ.30074-01 33 03 АННОТАЦИЯ Настоящее руководство пользователя содержит описание отладчика, описывает принципы работы с ним, методы его запуска. 3 ЮФКВ.30074-01 33 03 Содержание 1. Работа с отладчиком ............................................................................................................................4 1.1. Основные принципы работы с отладчиком ...............................................................................4 1.2. Запуск отладчика ..........................................................................................................................4 2. Команды отладчика .............................................................................................................................6 2.1. Система обозначений и терминология .......................................................................................6 2.2. Команды работы с точками останова .........................................................................................6 2.3. Команды работы с ресурсами программы..................................................................................7 2.4. Команды, отвечающие за исполнение ......................................................................................12 2.5. Команды общего назначения .....................................................................................................14 2.6. Замечание.....................................................................................................................................14 4 ЮФКВ.30074-01 33 03 1. РАБОТА С ОТЛАДЧИКОМ 1.1. Основные принципы работы с отладчиком Для начала отладки необходимо создать объектный файл. Для этого ассемблерный файлисходник транслируется ассемблером asm.exe. При этом в зависимости от ключей запуска ассемблера могут создаваться файлы разных объектных форматов. Более подробную информацию о работе ассемблера можно получить в документе «Ассемблер для платформы Win32. Руководство программиста». После создания объектного файла можно производить процесс отладки 1.2. Запуск отладчика Синтаксис командной строки отладчика: dbg.exe [-b число] имя_входного_файла [опции], где: имя_входного_файла - имя объектного файла, отладку которого следует произвести. Аргумент опции -b указывает на точку входа для файла в формате bin. Эта опция обязательно должна присутствовать при загрузке bin-файла. Отладчик интерпретирует формат в зависимости от расширения объектного файла: -elf исполняемый файл в формате ELF -hex исполняемый файл в формате Intel HEX -bin исполняемый файл в бинарном формате -mv исполняемый файл в формате MV опции - одна из следующих опций: /? - вывести подсказку командной строки; /x имя_файла_сценария - запустить отладку используя файл сценария команд; Файл сценария формируется по следующему правилу: каждая команда записывается в файл с новой строки, допустимо также написание комментариев, причем каждая строка комментария занимает всю строку в файле и начинается с символа '#' /l имя_лог_файла - запустить отладку используя лог-файл; 5 ЮФКВ.30074-01 33 03 В лог-файл с именем имя_лог_файла выводится содержимое всей отладочной сессии использованные команды отладчика и их выходная информация. /r - работа в режиме запуска. В этом режиме отладчик просто запускает программу на исполнение. Опции отладчика можно задавать также в специальном файле gdb.cfg, который должен находиться в одной директории с gdb.exe. Он должен содержать единственную строку, в которой перечислены необходимые опции отладчика. 6 ЮФКВ.30074-01 33 03 2. КОМАНДЫ ОТЛАДЧИКА 2.1. Система обозначений и терминология Эта глава использует следующую систему обозначений: | разделяет две альтернативы. [ нечто ] указывает, что нечто является необязательным: оно может быть задано, а может и нет. ( группа )* означает, что группа в скобках может повторяться ноль и более раз. ( группа )+ означает, что группа в скобках может повторяться один и более раз. "строка" обозначает текст строка. Под "форматом" информации. подразумевается один из следующих режимов отображения x Шестнадцатеричный o Восьмеричный b Двоичный d Десятичный r Без преобразования N Натуральный 2.2. Команды работы с точками останова 2.2.1. -break-after -break-after номер число Точка останова с номером 'номер' не срабатывает, пока она не будет достигнута 'число' раз. 2.2.2. -break-delete -break-delete Удалить точки останова, чьи номера указаны в списке аргументов. 2.2.3. -break-enable -break-enable Включить (ранее отключенные) точки-останова 7 ЮФКВ.30074-01 33 03 2.2.4. -break-disable -break-disable Отключить упомянутые точки-останова 2.2.5. -break-insert -break-insert [-exec | -read | -write] строка Вставить точку останова или watchpoint в место, указанное в 'строке'. Опции означают установку точки останова соответственно по исполнению, чтению и записи. 'Строка' может иметь один из следующих видов имя_функции имя_переменной Переменная должна быть "видна" на момент установки на неё контрольной точки имя_файла:имя_функции имя_файла:имя_строки *адрес *адрес:длина 'Длина' означает "протяженность" действия точки останова в байтах. 2.2.6. -break-list -break-list Отобразить список установленных точек останова 2.3. Команды работы с ресурсами программы 2.3.1. -data-write-memory -data-write-memory адрес формат-слова размер-слова значение Записать в память по адресу "адрес" значение "значение", занимающее "размер-слова" байт. `адрес' Выражение, определяющее адрес в памяти первого слова, которое надо записать. `формат-слова' 8 ЮФКВ.30074-01 33 03 Формат, который должен быть использован для записи значения в память. `размер-слова' Размер нового значения в байтах. `значение' Новое значение. 2.3.2. -data-read-memory -data-read-memory адрес формат-слова размер-слова число-строк число-колонок Отобразить содержимое памяти в виде таблицы из число-строк на число-колонок слов, причем каждое слово занимает размер-слова байт. В общей сложности считывается число-строк * число-колонок * размер-слова байт (возвращается как `total-bytes'). `адрес' Выражение, определяющее адрес в памяти первого слова, которое надо прочитать. `формат-слова' Формат, который должен быть использован для печати слов памяти. `размер-слова' Размер в байтах каждого слова в памяти. `число-строк' Число строк в выходной таблице. `число-колонок' Число колонок в выходной таблице. 2.3.3. -data-list-register-names -data-list-register-names [ ( ном-рег )+ ] Показать список имен регистров. Если аргументы не заданы, показывается список имен всех регистров. Если в качестве аргументов заданы целые числа, команда напечатает список имен регистров, соответствующих аргументам. `ном-рег' Номер регистра. 9 ЮФКВ.30074-01 33 03 2.3.4. -data-list-register-values -data-list-register-values формат [ ( ном-рег )* ] Отобразить содержимое регистров. "Формат" является форматом, в соответствии с которым должно быть возвращено содержимое регистров, за которым следует необязательный список чисел, указывающих регистры, подлежащие отображению. Отсутствие списка чисел означает, что должно быть возвращено содержимое всех регистров. `формат' Формат, который должен быть использован для вывода содержимого регистров. `ном-рег' Номер регистра. 2.3.5. -data-list-stackregister-values -data-list-stackregister-values формат [ ( ном-рег )* ] Отобразить содержимое стековых регистров. "Формат" является форматом, в соответствии с которым должно быть возвращено содержимое регистров, за которым следует необязательный список чисел, указывающих регистры, подлежащие отображению. Отсутствие списка чисел означает, что должно быть возвращено содержимое всех регистров. `формат' Формат, который должен быть использован для вывода содержимого регистров. `ном-рег' Номер регистра. 2.3.6. -data-list-bufregister-values -data-list-bufregister-values формат [ ( ном-рег )* ] Отобразить содержимое регистров циклического буфера. "Формат" является форматом, в соответствии с которым должно быть возвращено содержимое регистров, за которым следует необязательный список чисел, указывающих регистры, подлежащие отображению. Отсутствие списка чисел означает, что должно быть возвращено содержимое всех регистров. `формат' Формат, который должен быть использован для вывода содержимого регистров. `ном-рег' 10 ЮФКВ.30074-01 33 03 Номер регистра. 2.3.7. -data-write-register-values -data-write-register-values формат [ном-рег1 знач1 ..ном-регN значN] Запись в регистр с номером "рег_номN" значения "значN" в соответствии с форматом "формат" `формат' Формат, который должен быть использован для записи значения в регистр. `ном-регN' Номер регистра. `значN' Новое значение соответствующего регистра. 2.3.8. -data-write-stackregister-values -data-write-stackregister-values формат [ном-рег1 знач1 ..ном-регN значN] Запись в стековый регистр с номером "рег_номN" значения "значN" в соответствии с форматом "формат" `формат' Формат, который должен быть использован для записи значения в регистр. `ном-регN' Номер регистра. `значN' Новое значение соответствующего регистра. 2.3.9. -data-write-bufregister-values -data-write-bufregister-values формат [ном-рег1 знач1 ..ном-регN значN] Запись в регистр циклического буфера с номером "рег_номN" значения "значN" в соответствии с форматом "формат" `формат' Формат, который должен быть использован для записи значения в регистр. 11 ЮФКВ.30074-01 33 03 `ном-регN' Номер регистра. `значN' Новое значение соответствующего регистра. 2.3.10. -data-list-changed-registers -data-list-changed-registers Отобразить в виде списка номера регистров, претерпевших изменения после последнего обращения к ним отладчика. 2.3.11. -data-evaluate-expression -data-evaluate-expression выражение Вычислить выражение, заданное в единственном аргументе команды. 2.3.12. -stack-list-frames -stack-list-frames [нач_уровень посл_уровень] Отобразить стек функций, начиная с уровня с номером 'нач_уровень' и заканчивая уровнем 'посл_уровень'. Отсутствие аргументов означает отображение всего стека целиком. 2.3.13. -stack-select-frame -stack-select-frame номер_уровень Сделать уровень стека функций с номером 'номер_уровень' текущим. По умолчанию текущим считается верхний уровень стека. 2.3.14. -stack-list-locals -stack-list-locals [режим] Вывести список локальных переменных текущего уровня стека. С параметром 0 выводит только имена переменных, с параметром 1 выводит также их значения. 2.3.15. -stack-list-arguments -stack-list-arguments показ_знач [нижн_кадр верхн_кадр] 12 ЮФКВ.30074-01 33 03 Отобразить список аргументов для кадров от 'нижн-кадр' до 'верхн-кадр' (включительно). Если 'нижн-кадр' и 'верхн-кадр' не указаны, перечислить аргументы для всего стека вызовов. Аргумент 'показ-знач' должен иметь значение 0 или 1. Значение 0 означает, что выводятся только имена аргументов, а 1, что печатаются как имена, так и значения аргументов. 2.3.16. -clear-clock -clear-clock Сбросить счётчик числа тактов. 2.4. Команды, отвечающие за исполнение 2.4.1. -exec-continue -exec-continue [-t мс] Продолжить выполнение программы. Она выполняется до тех пор, пока либо не встретится точка останова, либо программа не завершится. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.2. -exec-run -exec-run [-t мс] Начать выполнение программы. Она выполняется до тех пор, пока либо не встретится точка останова, либо программа не завершится. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.3. -exec-until -exec-until имя файла:номер_строки [-t мс] Выполняет программу до тех пор, пока не будет достигнуто указанное в аргументе местоположение. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.4. -exec-step -exec-step [-t мс] Возобновить выполнение программы, останавливая ее, когда будет достигнуто начало следующей строки исходного кода, при условии, что она не является вызовом функции. Если же следующая строка является вызовом функции, программа останавливается на первой строке этой функции. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.5. -exec-next 13 ЮФКВ.30074-01 33 03 -exec-next [-t мс] Возобновить выполнение программы, останавливая ее, когда будет достигнуто начало следующей строки исходного кода. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.6. -exec-step-instruction -exec-step-instruction [-t мс] Возобновляет выполнение программы, выполняя одну машинную инструкцию. Опция "t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.7. -exec-next-instruction -exec-next-instruction [-t мс] Возобновляет выполнение программы, выполняя одну машинную инструкцию. Если инструкция является вызовом функции, выполнение продолжается до возврата из функции. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.8. -exec-finish -exec-finish [-t мс] Возобновляет выполнение программы до тех пор, пока не завершится текущая функция. Опция "-t" задаёт с помощью аргумента "мс" время в миллисекундах, через которое программа должна будет остановить свое исполнение. 2.4.9. -exec-abort -exec-abort Приостанавливает выполнение программы. 2.4.10. -exec-reverse -exec-reverse имя_файла номер_строки "Обратное" выполнение программы. Устанавливает точку исполнения команды по указанному файлу на указанную строку. 2.4.11. -file-exec-file -file-exec-file -e|-h|-b|-m имя_файла Указать выполняемый файл для отладки. В зависимости от опций файл может быть следующего формата: -e 14 ЮФКВ.30074-01 33 03 исполняемый файл в формате ELF -h исполняемый файл в формате Intel HEX -b исполняемый файл в бинарном формате -m исполняемый файл в формате MV 2.5. Команды общего назначения 2.5.1. Выход из отладчика quit, -gdb-exit, q Выход из отладчика 2.5.2. Вывод справки help строка Вывести на экран справочную информацию об отладчике. 'Строкой' может быть имя команды или имя категории команд. 2.6. Замечание Все команды имеют общий ключ '/?', по которому выводится справочная информация. 15 ЮФКВ.30074-01 33 03 Лист регистрации изменений Номера листов (страниц) Изм изме- заменен- . ненных ных новых Всего Входящий аннули- листов N N сопрово- Подп. Да- рован- (страниц) докумен- дительного та ных в докум. та документа и дата