下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 debug命令大全

debug命令大全.doc

debug命令大全

542796427
2013-01-25 0人阅读 举报 0 0 暂无简介

简介:本文档为《debug命令大全doc》,可适用于高等教育领域

debug命令大全启动Debug它是可用于测试和调试MSDOS可执行文件的程序。Debugdrive:pathfilenameparameters参数drive:pathfilename指定要测试的可执行文件的位置和名称。parameters指定要测试的可执行文件所需要的任何命令行信息。说明使用Debug命令但不指定要测试的文件如果使用没有位置和文件名的Debug命令然后键入所有的Debug命令以响应Debug提示符连字符()。Debug命令以下是Debug命令列表:显示Debug命令列表。a汇编记忆码。c比较内存的两个部分。d显示部分内存的内容。e从指定地址开始将数据输入到内存。f使用指定值填充一段内存。g运行在内存中的可执行文件。h执行十六进制运算。i显示来自特定端口的字节值。l将文件或磁盘扇区内容加载到内存。m复制内存块中的内容n为l或w命令指定文件或者指定正在测试的文件的参数。o向输出端口发送个字节的值。p执行循环、重复的字符串指令、软件中断或子例程。q停止Debug会话。r显示或改变一个或多个寄存器。s在部分内存中搜索一个或多个字节值的模式。t执行一条指令然后显示所有寄存器的内容、所有标志的状态和Debug下一步要执行的指令的解码形式。u反汇编字节并显示相应的原语句。w将被测试文件写入磁盘。xa分配扩展内存。xd释放扩展内存。xm映射扩展内存页。xs显示扩展内存的状态。分隔命令参数所有Debug命令都接受参数除了q命令之外。可以用逗号或空格分隔参数但是只有在两个十六进制值之间才需要这些分隔符。因此以下命令等价:dcs:dcs:d,cs:,指定有效地址项Debug命令中的address参数指定内存位置。Address是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。agltu和w命令的默认段是CS。所有其他命令的默认段是DS。所有数值均为十六进制格式。有效地址如下:CS:BA:在段名和偏移量之间要有冒号。指定有效范围项Debug命令中的range参数指定了内存的范围。可以为range选择两种格式:起始地址和结束地址或者起始地址和Zhang度范围(由l表示)。例如下面的两个语法都可以指定从CS:开始的字节范围:cs:fcs:lDebug子命令选择Debug命令以获得详细信息。Debug:A(汇编)Debug:C(比较)Debug(转储)Debug:E(键入)Debug:F(填充)Debug:G(转向)Debug:H(十六进制)Debug:I(输入)Debug:L(加载)Debug:M(移动)Debug:N(名称)Debug:O(输出)Debug:P(执行)Debug:Q(退出)Debug:r(寄存器)Debug:s(搜索)Debug:T(跟踪)Debug:U(反汇编)Debug:W(写入)Debug:XA(分配扩展内存)Debug:XD(取消分配扩展内存)Debug:XM(映射扩展内存页)Debug:XS(显示扩展内存状态)***********************Debug子命令******************************Debug:A(汇编)直接将记忆码合并到内存。该命令从汇编语言语句创建可执行的机器码。所有数值都是十六进制格式必须按一到四个字符输入这些数值。在引用的操作代码(操作码)前指定前缀记忆码。aaddress参数address指定键入汇编语言指令的位置。对address使用十六进制值并键入不以“h”字符结尾的每个值。如果不指定地址a将在它上次停止处开始汇编。有关将数据输入到指定字节中的信息请单击“相关主题”列表中的DebugE(键入)。有关反汇编字节的信息请单击“相关主题”列表中的DebugU(反汇编)。范例a命令支持所有形式的间接注册命令如下例所示:addbx,bpsipopbpdipushsi)还支持所有操作码同义词如下例所示:loopzloopejajnbe对于操作码必须指定wait或fwait前缀如下例所示:fwaitfaddst,st()thislineassemblesanfwaitprefix说明使用记忆码段的替代记忆码为cs:、ds:、es:和ss:。远程返回的记忆码是retf。字符串处理的记忆码必须明确声明字符串大小。例如使用movsw可以移动位的字串使用mov***(文字因故被系统屏蔽)***(文字因故被系统屏蔽)可以移动位字节串。汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。通过使用near或far前缀可以替代这样的跳转或调用如下例所示:a::jmpabyteshortjump:jmpnearabytenearjump:jmpfaraabytefarjump可以将near前缀缩写为ne。区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时必须用前缀wordptr或者前缀byteptr指定数据类型。可接受的缩写分别是wo和by。以下范例显示两种格式:decwosinegbyteptr指定操作数Debug使用包括在中括号()的操作数引用内存地址的习惯用法。这是因为另一方面Debug不能区分立即操作数和内存地址的操作数。以下范例显示两种格式:movax,loadAXwithhmovax,loadAXwiththecontentsofmemorylocationh使用伪指令使用a命令提供两个常用的伪指令:db操作码将字节值直接汇编到内存dw操作码将字值直接汇编到内存。以下是两个伪指令的范例:db,,,,"THISISANEXAMPLE"dbTHISISAQUOTATIONMARK:"db"THISISAQUOTATIONMARK:"dw,,,"BACH"Debug:C(比较)比较内存的两个部分。crangeaddress参数range指定要比较的内存第一个区域的起始和结束地址或起始地址和Zhang度。有关有效的range值的信息请单击“相关主题”列表中的“Debug说明”。address指定要比较的第二个内存区域的起始地址。有关有效address值的信息请单击“相关主题”列表中的“Debug说明”。范例以下命令具有相同效果:c,fcl每个命令都对h到Fh的内存数据块与h到Fh的内存数据块进行比较。Debug响应前面的命令并显示如下信息(假定DS=F):F:DEF:F:F:F:AF:F:FF:F:BDF:F:F:F:F:F:EF:F:CF:F:AAF:AF:BFF:BF:CBEF:CF:DF:DF:EF:EF:FFAF:F注意列表中缺少地址F:和F:。这表明那些地址中的值是相同的。说明如果range和address内存区域相同Debug将不显示任何内容而直接返回到Debug提示符。如果有差异Debug将按如下格式显示:addressbytebyteaddessDebug(转储)显示一定范围内存地址的内容。drange参数range指定要显示其内容的内存区域的起始和结束地址或起始地址和Zhang度。有关有效的range值的信息请单击“相关主题”列表中的“Debug说明”。如果不指定rangeDebug程序将从以前d命令中所指定的地址范围的末尾开始显示个字节的内容。有关显示寄存器内容的信息请单击“相关主题”列表中的DebugR(寄存器)。范例假定键入以下命令:dcs:fDebug按以下格式显示范围中的内容:BA:FDTOMSAWYER如果在没有参数的情况下键入d命令Debug按以前范例中所描述的内容来编排显示格式。显示的每行以比前一行的地址大个字节(如果是显示列的屏幕则为个字节)的地址开头。对于后面键入的每个不带参数的d命令Debug将紧接在最后显示的命令后立即显示字节内容。如果键入以下命令Debug将从CS:开始显示h个字节的内容:dcs:l如果键入以下命令Debug将显示范围从CS段的h到h中所有字节的内容:dcs:说明当使用d命令时Debug以两个部分显示内存内容:十六进制部分(每个字节的值都用十六进制格式表示)和ASCII码部分(每个字节的值都用ASCII码字符表示)。每个非打印字符在显示的ASCII部分由句号()表示。每个显示行显示字节的内容第字节和第字节之间有一个连字符。每个显示行从字节的边界上开始。Debug:E(键入)将数据输入到内存中指定的地址。可以按十六进制或ASCII格式键入数据。以前存储在指定位置的任何数据全部丢失。eaddress参数address指定输入数据的第一个内存位置。list指定要输入到内存的连续字节中的数据。有关集成记忆码的信息请单击“相关主题”列表中的DebugA(汇编)。有关显示内存部分内容的信息请单击“相关主题”列表中的DebugD(转储)。范例假定键入以下命令:ecs:Debug按下面的格式显示第一个字节的内容:BA:EB要将该值更改为请在插入点键入如下所示:BA:EB可以用一个e命令键入连续的字节值。在键入新值后按SPACEBAR(空格键)而不是按ENTER键。Debug显示下一个值。在此范例中如果按三次SPACEBAR(空格键)Debug将显示下面的值:BA:EBBC要将十六进制值BC更改为请在插入点键入如下所示:BA:EBBC假定决定值应该是F。要纠正该值请按HYPHEN键两次以返回到地址(值)。Debug显示以下内容:BA:EBBCBA:BA:在插入点键入f更改值如下所示:BA:f按ENTER停止e命令并返回到Debug提示符下。以下是字符串项的范例:eds:"Thisisthetextexample"该字符串将从DS:开始填充个字节。说明使用address参数如果在没有指定可选的list参数的值情况下指定address的值Debug将显示地址和内容在下一行重复地址并等待您的输入。此时您可以执行下列操作之一:·替换字节值。为此请在当前值后键入新值。如果您键入的值不是有效的十六进制值或该值包含两个以上的数字则Debug不会回显无效或额外的字符。·进入下一个字节。为此请按SPACEBAR(空格键)。要更改该字节中的值请在当前值后键入新值。如果按SPACEBAR(空格键)时移动超过了位界限Debug程序将显示新的一行并在行首显示新地址。·返回到前一个字节。为此请按HYPHEN键()。可以反复按HYPHEN键()向后移动超过多个字节。在按HYPHEN时Debug开始新行并显示当前地址和字节值。·停止执行e命令。为此请按ENTER键。在任何字节位置都可以按ENTER。使用list参数如果指定list参数的值随后的e命令将使用列表中的值替换现有的字节值。如果发生错误将不更改任何字节值。List值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。Debug:F(填充)使用指定的值填充指定内存区域中的地址。可以指定十六进制或ASCII格式表示的数据。任何以前存储在指定位置的数据将会丢失。frangelist参数range指定要填充内存区域的起始和结束地址或起始地址和Zhang度。关于有效的range值的信息请单击“相关主题”列表中的“Debug说明”。list指定要输入的数据。List可以由十六进制数或引号包括起来的字符串组成。范例假定键入以下命令:fba:l作为响应Debug使用指定的值填充从BA:到BA:FF的内存位置。Debug重复这五个值直到h个字节全部填满为止。说明使用range参数如果range包含的字节数比list中的数值大Debug将在list中反复指派值直到range中的所有字节全部填充。如果在range中的任何内存损坏或不存在Debug将显示错误消息并停止f命令。使用list参数如果list包含的数值多于range中的字节数Debug将忽略list中额外的值。Debug:G(转向)运行当前在内存中的程序。g=addressbreakpoints参数=address指定当前在内存中要开始执行的程序地址。如果不指定addressWindows将从CS:IP寄存器中的当前地址开始执行程序。breakpoints指定可以设置为g命令的部分的到个临时断点。有关执行循环、重复的字符串指令、软件中断或子程序的信息请单击“相关主题”列表中的DebugP(执行)。有关执行指令的信息请单击“相关主题”列表中的DebugT(跟踪)。范例假定键入以下命令:gcs:Windows运行当前内存中的程序直到执行到CS段中的断点地址为止。Debug将显示寄存器的内容和标志的状态并结束g命令。以下命令设置两个断点:gcs:,cs:如果在Debug遇到断点之后再次键入g命令将从在断点之后的指令开始执行而不是在通常的开始地址执行。说明使用address参数必须在address参数之前使用等号(=)以区分开始地址(address)和断点地址(breakpoints)。指定断点程序在它遇到的第一个断点处停止而不论您在breakpoint列表的什么位置键入断点。Debug在每个断点处用中断代码代替原始指令。当程序到达断点时Debug将所有断点地址恢复到它们的最初指令并显示所有寄存器的内容、所有标记的状态以及最后执行指令的解码形式。Debug显示的信息与使用Debugr(寄存器)命令并指定断点时所显示的信息相同。如果不在断点处停止程序Debug程序将不使用原始指令替换中断代码。设置断点的限制可以只在包含操作代码(操作码)的第一个字节的地址上设置断点。如果设置了个以上的断点Debug将显示以下信息:bperror对用户堆栈指针的要求用户堆栈指针必须有效且必须有个字节可用于g命令。该命令使用iret指令跳转到正在被测试的程序。Debug设置用户堆栈指针并将用户标志、代码段寄存器和指令指针压入用户堆栈。(如果用户堆栈无效或太小操作系统可能会失败。)Debug在指定的断点处设置中断代码(CCh)。重新启动程序不要在Windows显示以下消息后尝试重新启动程序Programterminatednormally要正确地运行程序必须通过使用Debugn(名称)和l(加载)命令重新加载该程序。Debug:H(十六进制)对指定的两个参数执行十六进制运算。hvaluevalue参数value代表从到FFFFh范围内的任何十六进制数字。value代表从到FFFFh范围内第二个十六进制数字。范例假定键入以下命令:hfaDebug执行运算并显示以下结果。A说明Debug首先将指定的两个参数相加然后从第一个参数中减去第二个参数。这些计算的结果显示在一行中:先计算和然后计算差。Debug:I(输入)从指定的端口读取并显示一个字节值。iport参数port按地址指定输入端口。地址可以是位的值。有关将字节值发送到输出端口的信息请单击“相关主题”列表中的DebugO(输出)。范例假定键入以下命令:if同时假定端口的字节值是h。Debug读取该字节并将其值显示如下:Debug:L(加载)将某个文件或特定磁盘扇区的内容加载到内存。要从磁盘文件加载BX:CX寄存器中指定的字节数内容请使用以下语法:laddress要略过Windows文件系统并直接加载特定的扇区请使用以下语法:laddressdrivestartnumber参数address指定要在其中加载文件或扇区内容的内存位置。如果不指定addressDebug将使用CS寄存器中的当前地址。drive指定包含读取指定扇区的磁盘的驱动器。该值是数值型:=A,=B,=C等。start指定要加载其内容的第一个扇区的十六进制数。number指定要加载其内容的连续扇区的十六进制数。只有要加载特定扇区的内容而不是加载debug命令行或最近的Debugn(名称)命令中指定的文件时才能使用drive、start和number参数。有关指定用于l命令的文件的信息请单击“相关主题”列表中的Debugn(名称)。有关写入调试到磁盘的文件的信息请单击“相关主题”列表中的Debugw(写入)。范例假定启动Debug并键入以下命令:nfilecom现在可以键入l命令以加载Filecom。Debug将加载文件并显示Debug提示符。假定需要从驱动器C将起始逻辑扇区为(Fh)的(Dh)个扇区的内容加载到起始地址为BA:的内存中。为此请键入以下命令:lba:fd注意使用不带参数的l命令当使用不带参数的l命令时在debug命令行上指定的文件将加载到内存中从地址CS:开始。Debug同时将BX和CX寄存器设置为加载的字节数。如果不在debug命令行指定文件所装入的文件将是最近使用n命令经常指定的文件。使用具有address参数的命令如果使用带address参数的l命令Debug将从内存位置address开始加载文件或指定扇区的内容。使用带全部参数的l命令如果使用带所有参数的l命令Debug将加载指定磁盘扇区的内容而不是加载文件。加载特定扇区的内容

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/12

debug命令大全

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利