debug常用命令
Debug命令
键入命令E :带list参数。 list 值可以是十六进制字节串或字符串。使用空 格、逗号或制表符来分隔值。必须将字符串包括 在单或双引号中。
Debug命令
填充命令F:
使用指定的值填充指定内存区域中的地址。 可以指定十六进制或 ASCII 格式表示的数据。任何以 前存储在指定位置的数据将会丢失。 格式:f range list 参数
Debug命令
比较命令C
相同,则不显示任何内容,否则将不同处按如下格式显示: address1 byte1 byte2 addess2
Debug命令
寄存器命令R
显示所有寄存器内容或修改指定寄存器内容 格式:r [寄存器名] 若不带参数,则显示所有寄存器内容; 若带寄存器名,则首先显示内容,然后等待修改。
range:指定要填充内存区域的起始和结束地址,或起始地 址和长度。 list::指定要输入的数据。List 可以由十六进制数串或单/双 引号包括起来的字符串组成。
Debug命令
填充命令F:
如果 range 包含的字节数比 list 中的数值大,Debug 将在 list 中反复指 派值,直到 range 中的所有字节全部填充。
• Debug 命令中的 range 参数指定了内存的范围,可 以为 range 选择两种格式:
– 起始地址和结束地址 – 起始地址和长度(由字母l后跟十六进制数表示)
显示命令d [range]
– 当使用 d 命令时,Debug 以两个部分显示内存内容:十六进 制部分(每个字节的值都用十六进制格式表示)和 ASCII 码 部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字 符在显示的 ASCII 显示命令d [range] 部分由句号 (.) 表示。每个显示行显示 16 – 字节的内容,第 8 字节和第 9 字节之间有一个连字符。每个 显示一定范围内存地址的内容。 显示行从 16 字节的边界上开始。 – 参数range 指定要显示其内容的内存区域的起始和结束地址,或起始地址 和长度。 – 如果不指定 range,将从以前 d 命令中所指定的地址范围的末 尾开始显示 128 个字节的内容。
Debug命令
运行命令G
g cs:7550 运行当前内存中的程序,直至执行到 CS 段中的 断点地址 7550 为止。Debug 将显示寄存器的内 容和标志的状态并结束 g 命令。 以下命令设置两个断点: g cs:7550, cs:8000 如果在 Debug 遇到断点之后再次键入 g 命令,将 从在断点之后的指令开始执行,而不是在通常的 开始地址执行。
执行命令P
– 格式:p [=address] [number] – address:起始地址 – number:指令条数 – 功能:从address处开始执行number条指令。 – 若address缺省则从CS:IP处开始执行;若 number缺省则执行1条指令。
Debug命令
执行命令P
指令条数缺省
如果 list 包含的数值多于 range 中的字节数,Debug 将忽略 list 中额外的值。 如果在 range 中的任何内存损坏或不存在,Debug 将显示错误消息并停 止 f 命令。
Debug命令
汇编命令A
按汇编语句向指定地址输 入程序。 格式:a [address] 参数 address 指定输入汇编语言指令 的位置。对 address 使 用十六进制值,不用输 入后缀“h” 。如果不指 定地址,a 将在它上次停 止处开始汇编。
Debug命令
反汇编命令U
若仅指定起始地址 则从起始地址处 开始反汇编20h 个单元。
Debug命令
运行命令G
运行当前在内存中的程序。 格式:g [=address] [breakpoints] address:起始地址。 若不指定 address,将从 CS:IP 处开始执行程序。 breakpoints:指定最多不超过10个的临时断点。
Debug命令
Debug命令
输入命令E 将数据输入到内存中指定的地址。 可以按十六进制或 ASCII 格式键入数据。 以前存储在指定位置的任何数据全部丢失。 e address [list] 参数 address 指定输入数据的第一个内存位置。 list 指定要输入到内存的连续字节数据。
Debug命令
Debug命令
反汇编命令U
– 将内存中的机器码转换成汇编语言指令。 – 格式:U [range] – range:
• 起始地址 结束地址 • 起始地址 l 长度 • 若缺省则从CS:IP处开始反汇编20h个单元的内容。
Debug命令
反汇编命令U
Debug命令
反汇编命令U
若无address2, 若不带参数,则从 则从address1 CS:IP处开始反 处开始反汇编 汇编20h个单元。 20h个单元。
Debug命令
跟踪命令T
起始地址和指令条数均缺省
Debug命令
搜索命令S
– 格式:s range list – range:
• 起始地址 结束地址 • 起始地址 l 长度
– list:
• 字节型数据(用空格或逗号隔开),或字符串(用 单引号或双引号括住)
Debug命令
搜索命令S
Debug命令
• Debug 命令中的 address 参数指定内存位置
– – – – 以下命令等价: 可以忽略段寄存器或段地址。 有效地址如下: dcs:100 110 a,g,l,t,u 和 w 命令的默认段是 CS。 CS:0100 d cs:100 110 所有其他命令的默认段是 DS。 d,cs:100,110 04BA:0100 所有数值均为十六进制格式。 从 CS:100 开始的 16 字节范围:
Debug命令
加减命令H
Debug 首先将指定的两个参数相加,然后从第一 个参数中减去第二个参数。这些计算的结果显 示ug命令
比较命令C
格式:c range address 参数 range 指定要比较的内存第一个区域的起始和结束地址,或起始地 址和长度。 address 指定要比较的第二个内存区域的起始地址。 如果 range 和 address 内存区域相同,Debug 将不显示任何内 容而直接返回到 Debug 提示符。 如果有差异,Debug 将按如下格式显示: address1 byte1 byte2 addess2
起始地址和指令条数均缺省
Debug命令
执行命令P
起始地址缺省
执行命令P
Debug命令
Debug命令
运行命令G
使用 address 参数 必须在 address 参数之前使用等号 (=) 以区分开 始地址 (address) 和断点地址 (breakpoints)。
Debug命令
加减命令H 对指定的两个参数执行十六进制运算。 格式:h value1 value2 参数 value1 代表从 0 到 FFFFh 范围内的任何十六进制 数字。 value2 代表从 0 到 FFFFh 范围内第二个十六进制 数字。
输入命令E
欲向100单元输入数据,输入命令后计算 机显示当前单元内容并等待新数据输入。
向100单元输入数据31后,每按一次空格键,屏幕显示下一单元内 容并等待输入新内容。当发现前几个单元有错误需修改则按“-”(减 号键),屏幕依次回退到需修改单元,然后可修改,若不需修改则 按空格键。若完成则按“enter”(回车键)。
• 使用不带参数的Debug命令
– 如果使用没有位置和文件名的 Debug 命令,则进入Debug 提示符状态, Debug 提示符为连字符 (-)。 – 在Debug 提示符状态下键入q命令则退出Debug 。
Debug命令格式
• 除了 q 命令之外,所有 Debug 命令都接受参 CS:100 10f 数,可以用逗号或空格分隔参数,但是只有在 CS:100 l 10 两个十六进制值之间才需要这些分隔符。
Debug常用命令简介
启动及退出Debug
• Debug可用于测试和调试 MS-DOS 可执行文件。
– Debug [[drive:][path] filename [parameters]] – 参数 [drive:][path] filename 指定要测试的可执行文件的位置和名称。 parameters 指定要测试的可执行文件所需要的任何命令行信息。
Debug命令
复制命令M
格式:m range address 将range区域的内容复制到address开始的内存中。
Debug命令
跟踪命令T
格式:t [=address] [value] address为跟踪的起始地址; value为跟踪的指令条数。 若value值缺省则跟踪1条指令。 若address缺省则从CS:IP处开始跟踪。