Компилятор создает отладочную информацию и помещает ее в один или несколько выходных файлов.
Синтаксис
-debug[+ | -]
-debug:[full | pdbonly]
Аргументы
+ | — | Необязательный элемент. Задание значения + или -debug включает создание компилятором отладочной информации, которая помещается в файл PDB. Указание — дает тот же результат, что и отсутствие -debug . |
full | pdbonly | Необязательный элемент. Определяет тип отладочной информации, создаваемой компилятором. Если не указать -debug:pdbonly , по умолчанию используется значение full , что позволяет подключить отладчик к выполняющейся программе. Аргумент pdbonly позволяет выполнять отладку исходного кода при запуске программы в отладчике, но при этом код на языке ассемблера отображается только при подключении выполняющейся программы к отладчику. |
Примечания
Используйте этот параметр для создания отладочных сборок. Если не указать -debug , -debug+ или -debug:full , вы не сможете выполнить отладку выходного файла программы.
DEBUG ЧТО ЭТО И КАК ДЕБАЖИТЬ НА РЕАЛЬНЫХ ПРИМЕРАХ в JAVA | АВТОМАТИЗАЦИЯ НА ПАЛЬЦАХ
По умолчанию отладочная информация не выводится ( -debug- ). Чтобы вывести отладочную информацию, укажите -debug или -debug+ .
Сведения о настройке производительности отладки для приложения см. в разделе Упрощение отладки образов.
1. Если проект выбран в Обозреватель решений, в меню Project выберите пункт «Свойства». 2. Перейдите на вкладку «Компиляция «. 3. Нажмите кнопку «Дополнительные параметры компиляции». 4. Измените значение в поле «Создание сведений об отладке «. |
Пример
Следующий пример помещает отладочную информацию в выходной файл App.exe .
vbc -debug -out:app.exe test.vb
См. также
- Компилятор Visual Basic с интерфейсом командной строки
- -bugreport
- Примеры командных строк компиляции
Источник: learn.microsoft.com
Краткие сведения об отладчике программ debug
Для вызова отладчика DEBUG следует набрать в командной строке DOS слово debug и, если необходимо, имена файлов, с которыми мы будем работать, например: debug prog.exe. Приглашение к вводу команд — «–» .После завершения работы с DEBUG для выхода из него следует набрать q. После набора каждой команды следует нажимать Enter.
Основные команды отладчика debug
- N (name) — объявление имени файла.
- R m (register) — отображение на экране дисплея содержимого регистра памяти МП с именем m. Если m не указано, показывается содержимое всех регистров памяти МП, вектор-адрес следующей команды (CS:IP), машинный и мнемокод этой команды; например:
AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
Пошаговая отладка программ с выводом переменных | О самом простом | Program DEBUG
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC
1A8E:010A B81500 MOV AX,0015 ;
Если отображается содержимое одного регистра, то команда R позволяет изменить его содержимое:
- A n (assembler) — прием команд ассемблера с клавиатуры и преобразование их в машинные коды, n — начальный вектор-адрес машинных команд.
Пример ввода программы:
1A8E:0100 mov ax,15
1A8E:0103 mov bx,5
1A8E:0106 add ax,bx
1A8E:0108 div bx
- U n1, n2 Lk (unassembler) — преобразование машинных кодов команд в команды на языке ассемблера и отображение их на экране дисплея, n1 — вектор-адрес 1-ой, а n2 — смещение последней из машинных команд, подлежащих деассемблированию, k — длина программы (может указываться либо n2, либо Lk). Пример деассемблирования программы:
1A8E:0100 B81500 MOV AX,0015
1A8E:0103 BB0500 MOV BX,0005
1A8E:0106 01D8 ADD AX,BX
1A8E:0108 F7F3 DIV BX
- T k (tracing) — выполнение очередных k команд программы: Ели k не указано, то выполняется одна команда (пошаговая трассировка программы). Команды обращения к процедурам и внутренние прерывания командой Т не выполняются, так как по Т будут последовательно выполняться команды процедуры и команды обработки прерывания соответственно. В этих случаях следует использовать команду процедурной трассировки P (procedure), почти аналогичную команде T, но позволяющую автоматически полностью выполнять встречающиеся при трассировке процедуры, или команду G n. После выполнения команд (команды) на дисплей выводится:
- содержимое всех регистров памяти МП в шестнадцатеричном коде (значения флагов регистра FL показываются в мнемокоде (см. табл. 9.2);
- вектор-адрес (CS:IP);
- машинный и мнемокоды текущей команды.
Пример трассировки программы:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0100 NV UP EI PL NZ NA PO NC
1A8E:0100 B81500 MOV AX,0015
AX=0015 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0103 NV UP EI PL NZ NA PO NC
1A8E:0103 BB0500 MOV BX,0005
AX=0015 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0106 NV UP EI PL NZ NA PO NC
1A8E:0106 01D8 ADD AX,BX
AX=001A BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=0108 NV UP EI PL NZ NA PO NC
1A8E:0108 F7F3 DIV BX
AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC
1A8E:010A 48 DEC AX
- G n (go) — выполнение EXE- или COM-программы до команды с вектор-адресом n, при отсутствии n программа отрабатывает до конца.
После выполнения команд (команды) на дисплей выводятся:
- содержимое всех регистров памяти МП в шестнадцатеричном коде (значения);
- флаги регистра FL выводятся в мнемокоде (см. табл. 9.2);
- вектор-адрес (CS:IP), машинный и мнемокод текущей команды.
После выполнения программы получим:
AX=0005 BX=0005 CX=0000 DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A8E ES=1A8E SS=1A8E CS=1A8E IP=010A NV UP EI PL NZ NA PO NC
1A8E:010A 48 DEC AX
- D n, s Lk (dump) — отобразить на экране дисплея содержимое k ячеек памяти, начиная с ячейки по вектор-адресу n (по умолчанию –ни n, ни Lk не указаны: n — текущий вектор-адрес + 1 и k = 128), то есть, нажав клавиши D и Enter, можно посмотреть следующие 128 ячеек:
(Редактору. Все строчки поместить без переносов, уплотнить шрифт)
1D20:0C00 F7 07 01 00 75 12 2E C7-06 CB 98 02 00 EB 09 E8 . u.
1D20:0C10 96 00 F8 EB 0D F9 EB 0A-50 B0 03 B4 FF E8 03 00 . P.
1D20:0C20 58 F8 C3 57 26 8B 7F 04-2E 89 3E CF 98 26 88 05 X..W…e.P. .U..U..P
1D20:0C60 75 06 26 88 55 04 EB 3E-3C 04 75 0F 2E A1 D8 98 u.
- если L и k не указаны, то до ячейки, имеющей в том же сегменте, смещение равно S;
- если S не указано, то показываются k ячеек памяти (в частности: D n L1 — одна ячейка памяти с вектор-адресом n);
1A8E:3B40 6C 6C 65 lle
- если S и Lk не указаны (есть только D n), то отображаются 128 ячеек памяти, например:
1A8E:0400 69 6C 65-66 69 6C 65 66 69 6C 65 ilefilefile
1A8E:0410 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile
1A8E:0420 00 44 CD 21 F6 C2 80 74-05 F6 C2 10 75 05 E8 52 .D. t. u..R
1A8E:0430 FD 8C DB 53 81 C3 2D 00-03 DA 8C CD 8B C2 80 E4 . S..-.
1A8E:0440 0F B1 04 8B F2 D3 E6 8B-CE D1 E9 4E 4E 8B FE 2B . NN..+
1A8E:0450 E8 2B D8 8E C5 8E DB F3-A5 FC 8E DD 07 06 BF 00 .+.
1A8E:0460 01 33 F6 AD 95 BA 10 00-EB 2B AD 95 B2 10 EB 35 .3. +. 5
1A8E:0470 AD 95 B2 10 EB 36 AD 95-B2 10 EB 3B AD 95 B2 10 . 6. ;.
1A8E:0480 EB 5D AD 95 B2 .].
Содержимое выводится в шестнадцатеричном коде и в соответствующих символах ASCII (символы расширенного набора ASCII замещаются точкой (.)).
- E n “текст1“, “ текст2“. (enter) — изменение содержимого ячеек памяти, начиная с вектор адреса n; количество ячеек определяется размером и количеством указанных в команде текстов, так, по команде –e 200 ‘pole’, ‘файл’, ‘file’ выводится следующая информация:
1A8E:0200 70 6F 6C 65 E4 A0 A9 AB-66 69 6C 65 pole. file;
При вводе числовой информации (машинных кодов команд) следует набрать E n, нажать клавишу Enter, и после отображенного байта информации и точки ввести новое значение (1 байт), например:
Для ввода последующих байтов нужно нажать клавишу Space и выполнить ввод очередного байта.
- F n Lk “текст1“ (fill) — заполнение блока памяти длиной k байт, начиная с вектор-адреса n, однобайтовыми фрагментами «текст1»: например, –f 400 L20 ‘file’.
Результат выполнения команды:
(Редактору. Все строчки без переносов).
1A8E:0400 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile
1A8E:0410 66 69 6C 65 66 69 6C 65-66 69 6C 65 66 69 6C 65 filefilefilefile
1A8E:0420 00 44 CD 21 F6 C2 80 74-05 F6 C2 10 75 05 E8 52 .D. t. u..R
- S n Lk“текст“ (search) — поиск фрагмента «текст» в поле памяти длиной k ячеек с выдачей вектор-адреса ячейки, хранящей искомый текст: –s 200 l10 ‘fi’.
Результат работы команды: 1A8E:0208.
- W (write) — запись программы на диск; в регистр СХ должна быть предварительно указана длина программы в байтах, в регистр BX занесен нуль, а командой N задано имя файла (N имя_файла);
- L (load) — загрузка файла с диска в ОП; предварительно следует в BX записать нуль, в регистр СХ записать длину файла в байтах и объявить его имя N; для стандартно оформленных COM- и EXE-программ это же можно выполнить, набрав debug имя_файла.
- ввод всех числовых данных осуществляется в шестнадцатеричной системе счисления, текстов — в символах ASCII, помещенных в кавычки;
- вектор-адрес имеет форму адрес сегмента:адрес смещения; адрес сегмента может быть определен в явном виде шестнадцатеричным кодом или указанием соответствующего сегментного регистра; сегмент команд может быть задан по умолчанию; адрес смещения описывается в явном виде шестнадцатеричным кодом. Примеры задания вектор-адреса: 4FC5:10B, 13C6:1ABB, DS:0, CS:100;
- при вводе и отображении двухбайтовых слов старший байт размещается правее младшего. Пример: при отображении машинного кода команды mov AX, 0123 на экране получим: B82301 (B8 — код ‘mov ax’).
Источник: studfile.net
DEBUG – запустить стандартный отдачик MS DOS — Windows XP.
Debug.exe — программа-отладчик, разработанная для операционной системы MS DOS и используемая для отладки исполняемых файлов. Под более поздние версии операционных систем (Windows NT и старше) работает через эмулятор MS-DOS и имеет ограниченные возможности. До Windows XP включительно, отладчик debug.exe являлся стандартным компонентом системы.
Формат командной строки:
DEBUG [[диск:][путь]имя_файла [параметры_программы]]
Параметры командной строки:
[диск:][путь]имя_файла — путь и имя отлаживаемой программы.
параметры_программы — параметры командной строки для отлаживаемой программы.
debug /? — отобразить краткую справку по использованию.
debug C:windowssystem32edit.com C:boot.ini — запустить отладку текстового редактора edit.com , передав ему в качестве параметра командной строки путь и имя редактируемого файла.
debug — при запуске без параметров, отладчик переходит в интерактивный режим, ожидая ввода команд. Подсказку по используемым командам можно получить, введя знак вопроса — ? :
Краткая подсказка по использованию отладчика Debug:
assemble | A [адрес] |
compare | C диапазон адрес |
dump | D [диапазон] |
enter | E адрес [список] |
fill | F диапазон список |
go | G [=адрес] [адреса] |
hex | H значение1 значение2 |
input | I порт |
load | L [адрес] [диск] [превый_сектор] [число] |
move | M диапазон адрес |
name | N [путь] [список_аргументов] |
output | O порт байт |
proceed | P [=адрес] [число] |
quit | Q |
register | R [регистр] |
search | S диапазон список |
trace | T [=адрес] [значение] |
unassemble | U [диапазон] |
write | W [адрес] [диск] [первый_сектор] [число] |
выделение памяти EMS | XA [#число_страниц] |
освобождение памяти EMS | XD [дескриптор] |
сопоставление страниц EMS | XM [Lстраница] [Pстраница] [дескриптор] |
вывод состояния памяти EMS | XS |
При небольших размерах исполняемого файла, отладчик обладал очень неплохими возможностями, позволяя не только выполнять отладку программ, но и просматривать содержимое памяти, в том числе BIOS материнской платы и плат расширения, выполнять операции ввода-вывода с доступом к регистрам устройств ( в среде MS DOS ), и например, позволял легко сохранить в файл и дизасемблировать главную загрузочную запись MBR.
Для выхода из отладчика используется клавиша q .
Источник: ab57.ru