⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 盗版 (2001年4月4日).txt

📁 delphi 编程技巧
💻 TXT
📖 第 1 页 / 共 5 页
字号:
做反组译会显示此插断的程式码。若是个硬体插断,反组译则会显示插断发生 
时所执行的程式码。 

? 或 H --- 显示辅助讯息 

语法: < ? | H > [command | expression] 

解说: 

? 和 H 指令两者均会显示辅助讯息。 

如果未指定参数将会一次一个萤幕的显示所有指令和运算子的简单解说。按 
任意键以继续显示或按 ESC 键离开辅助说明。 

若有指定参数则会显示包括指令语法及范例的详尽说明。 

如果加上运算式,则会计算并以 16 进位、10 进位及 ASCII 字元显示其结 
果。 

〔例〕 ? ALTKEY 
这道指令会显示包括 ALTKEY 指令的语法及范例的资料。 

〔例〕 H 10 + 14*2 
这道指令会显示: 0038 00056 "8" 。这是 10+14*2 的 16 进位、10 进 
位值及 ASCII 字元。 

VER --- 显示 Soft-ICE 的版本号码 

语法: VER 

〔例〕 VER 
这道指令会显示 Soft-ICE 的版本及 Nu-Mega 的版权讯息。 

§5.2 I/O 埠指令 

指令: 

I 、IB --- 由位元组 I/O 埠输入 

IW --- 由字组 I/O 埠输入 

O 、OB --- 由位元组 I/O 埠输出 

OW --- 由字组 I/O 埠输出 

I 、IB 、IW --- 由 I/O 埠输入 

语法: I [size] port 

size --- B -- byte W -- word D -- double word 

port --- 一个位元组或字组的值 

解说: 

这个由埠输入的指令是用来读取及显示硬体埠之值的。你可以从位元组或字 
组埠输入。如果没有指定 size ,内定值是位元组。 

〔例〕 I 21 
这道指令是显示一号中断控制器的遮罩暂存器之值。 

O 、OB 、OW --- 由字组 I/O 埠输出 

语法: O [size] port value 

size --- B -- byte W -- word D -- double word 

port --- 一个位元组或字组的值 

value --- 位元埠为一位元组值;字组埠为一字组值 

解说: 

对埠输出的指令是用来对硬体埠写值的。你可以对位元组埠或字组埠做输出 
,如果没有指定 size ,内定值是位元组。 

〔例〕 O 21 FF 
这道指令会遮罩住一号中断控制器的所有中断。 

§5.3 转换控制指令 

指令: 

X --- 离开 Soft-ICE 之视窗 

G --- 执行到某位址 

T --- 追踪一道程式码 

P --- 单步执行程式 

HERE --- 执行到目前游标那行 

GENINT --- 强制某一插断 

EXIT --- 强制离开目前之 DOS 程式 

BOOT --- 载入系统 (保留 Soft-ICE ) 

HBOOT --- 硬体系统载入 (完全重设) 

X --- 离开 Soft-ICE 之视窗 

语法: X 

解说: 

X 指令会离开 Soft-ICE 视窗并恢复因叫出 Soft-ICE 而中断的程式之控制 
权。Soft-ICE 视窗会消失。如果有设置任何中断点,它将被启动。 

〔例〕 X 

G --- 执行到某位址 

语法: G [=staer-address] [break-address] 

解说: 

G 指令会离开 Soft-ICE 视窗并设置一个只用一次的执行中断点。除此之外 
,所有的 sticky 中断点也会被启动。 

若有指定 start-address 参数,将从 start-address 开始执行;否则会从 
目前的 CS:IP 开始执行。程式将一直执行,直到达到 break-address 、使用了 
叫出视窗的热键或 sticky 中断点发生才会停止。 

break-address 必需是一道程式码的第一位元组。 

当达到指定的 break-address 时,CS:IP 将指向设置中断点的位置。 

未加参数的 G 指令和 X 指令有相同的作用。 

除非所有的中断点暂存器都被 sticky 中断点占满了,不然 non-sticky 中 
断点会使用 80386 中断点暂存器。在这种状况下,中断点将会使用 INT 3 方式 
。这种情形下,在 ROM 中 G 或 P 指令将无法正常工作。如果你尝试这样做将会 
显示出错误讯息。 

〔例〕 G CS:1234 
这道指令将在 CS:1234 设置一个只用一次的执行中断点。 

T --- 追踪一道程式码 

语法: T [=start-address] [count] 

解说: 

T 指令使用单步旗号以单步执行一道程式码。 

如果没有指定 start-address ,将从目前的 CS:IP 开始执行。若有指定 
start-address ,则 CS:IP 将指向 start-address 以进行单步执行。 

如果有指定 count ,Soft-ICE 将单步执行 count 次。TRACE 指令将持续执 
行直到 count 为零或按了 ESC 键,而不管是否有中断点发生。 

若是在原始码模式,T 指令会单步到下一道原始码叙述。如果目前的叙述是 
个程序或呼叫函数且呼叫的程序的原始码存在,T 指令会单步执行进入这个呼叫 
。如果没有呼叫的程序或函数的原始码,T 指令会单步执行完整个程序。 

〔例〕 T = 1284 3 
这道指令会单步执行在记忆体位址 1284 的 3 道程式码。 

P --- 单步执行程式 

语法: P 

解说: 

P 指令是个逻辑的程式单步执行。除非目前 CS:IP 之程式码是呼叫、插断、 
回圈或反复字串,不然将执行此程式码。若为呼叫、插断等程式码,将会执行完 
整个程序或反复动作才会回到 Soft-ICE 。 

P 指令会设置一个只用一次的执行中断点。除非所有的中断点暂存器都被 
sticky 中断点占满了,不然 non-sticky 中断点会使用 80386 中断点暂存器。 
在这种状况下,中断点将会使用 INT 3 方式。这种情形下,在 ROM 中 G 或 P 
指令将无法正常工作。如果你尝试这样做将会显示出错误讯息。 

若是在原始码模式,P 指令会单步到下一道原始码叙述。如果目前的叙述是 
个程序或呼叫函数,P 指令会把它整个执行完。 

〔例〕 P 
这道指令会单步执行程式。 

HERE --- 执行到目前游标那行 

语法: HERE 

解说: 

HERE 指令会一直执行到目前游标所在那行。只有当游标在程式码窗中才能使 
用 HERE 指令。如果程式码窗不可见或游标不在其中,用 G 指令代替。 

HERE 指令会离开 Soft-ICE 视窗并设置一个只用一次的执行中断点。此外, 
所有的 sticky 中断点也会被启动。 

程式将由目前的 CS:IP 开始执行,直到执行到游标所在位置的程式码、使用 
了叫出视窗的热键或某 sticky 中断点发生为止。 

除非所有的中断点暂存器都被 sticky 中断点占满了,不然 non-sticky 中 
断点会使用 80386 中断点暂存器。在这种状况下,中断点将会使用 INT 3 方式 
。这种情形下,在 ROM 中 G 或 P 指令将无法正常工作。如果你尝试这样做将会 
显示出错误讯息。 

〔例〕 HERE 
这个例子在目前游标所在设置一个执行中断点,然後离开 Soft-ICE 并从 
目前的 CS:IP 开始执行。 

GENINT --- 强制某一插断 

语法: GENINT INT1 | INT3 | NMI | interrupt-number 

interrupt-number --- 00 到 FF 中的一个数字 

解说: 

GENINT 指令会强制发生某一插断。当 Soft-ICE 和另一个软体除错器共用时 
,这个功能可以用来把控制权交给另一个除错器。这也可以用来测试插断程序。 

GENINT 指令会模拟执行一道硬体插断或 INT 程式码。它将把 falg 、CS 、 
IP 之值推入堆叠,并把 CS 、IP 之值改成插断向量表中和指定的 interrupt- 
number 相对的进入点。 

〔例〕 GENINT NMI 
这道指令会强制发生一个无法遮罩的插断。如果 Soft-ICE 和 CodeView 
一起使用,这将把控制权交回 CodeView 。 

EXIT --- 强制离开目前之 DOS 程式 

语法: EXIT [R] [D] 

R --- 恢复插断向量表 

D --- 清除所有中断点 

解说: 

EXIT 指令藉强制执行 INT 21h 的 4Ch 功能来中止目前程式。这个指令只有 
在 DOS 处於可以接受此函数呼叫的状态下才能使用。如果此呼叫是由目前的中断 
函式呼叫或是在 DOS 尚未备妥时,系统的行为将无法预期。 

使用 R 参数时,除了中断向量表外,不会做任何系统重设的动作。这意味著 
BIOS 变数、视讯模式及其它系统层次的资料并不会被还原。 

使用 R 参数会把中断向量还原成它们最後一次储存的状态。Soft-ICE 会在 
其载入时、程式以 LDR.EXE 载入时及使用 VECS S 指令时储存中断向量。 

〔注〕依照下列步骤来重新启动由 LDR.EXE 载入的程式: 

EXIT R 
LDR prog.EXE 

EXIT 指令会把中断向量表还原成程式载入前之值,然後回到命令处理器。 
由执行 LDR 并加上 .EXE 的尾巴可以把程式重新载入而不需重载符号及原 
始码。符号和原始码会保持在记忆体中。 

〔注意〕EXIT 指令必需小心使用。因为 Soft-ICE 可以在任何时候叫出,可能会 
有 DOS 不能接受中止函数呼叫的情形发生。而且 EXIT 指令也不会重置 
程式的状况。举例来说,EXIT 指令不会重设视讯模式。如果你的程式把 
BIOS 和硬体放在特别的视讯模式中,使用 EXIT 指令後仍会留在此模式 
中。 

〔例〕 EXIT R 
还原中断向量表并跳出目前的程式。如果程式是用 LDR.EXE 载入的,则要 
加 R 参数。 

BOOT --- 载入系统 (保留 Soft-ICE ) 

语法: BOOT 

解说: 

BOOT 指令会重置系统并保留 Soft-ICE 。BOOT 可以用来对载入程序、DOS 
驱动程式及非 DOS 的作业系统做除错。 

BOOT 是以 ROM BIOS 的 19h 插断呼叫的方法。有时候 19h 插断可能无法工 
作。如果发生这种状况,叫出 Soft-ICE 并使用 HBOOT 指令。 

为了让 BOOT 正确的工作,Soft-ICE 必需由 CONFIG.SYS 中做第一个驱动程 
式载入。这样 Soft-ICE 才能尽可能的还原系统原始状态。 

〔例〕 BOOT 
这道指令会重新载入系统。Soft-ICE 依然保留。 

HBOOT --- 硬体系统载入 (完全重设) 

语法: HBOOT 

解说: 

HBOOT 指令会重置整个系统。在重置的过程中 Soft-ICE 不会保留。除非介 
面卡需要重开电源才能重置否则 HBOOT 就够用了。在这种罕有的状况中,你必需 
关掉电源再重新打开。 

〔例〕 HBOOT 
这道指令会重新载入系统。Soft-ICE 必需要重新载入。 

§5.4 除错模式指令 

指令: 

ACTION --- 设定中断点发生後的动作 

WARN --- 设定 DOS/ROM BIOS 重入 (re-entrancy) 警告模式 

BREAK --- 在任何时候中断 

13HERE --- 把 INT 3 指向 Soft-ICE 

ACTION --- 设定中断点发生後的动作 

语法: ACTION [INT1 | INT3 | NMI | HERE | int-number] 

int-number --- 任何可用的插断号码 (0-FFh) 。只有当自己的中断点处理 
程序已取代原插断向量时才可使用。(参阅 §11.2) 

解说: 

ACTION 指令用来决定当中断点条件成立时要把控制权交给谁。大部份的状况 
都是 INT3 或 HERE 。INT3 是在 Soft-ICE 和其它除错器一起使用时使用;HERE 
则是用来使中断点条件成立时回到 Soft-ICE 。INT1 和 NMI 则是两者择一用在 
无法使用 INT3 的除错器时。例如:使用 CodeView 时,ACTION 设为 NMI 最好 

只有当自己的中断点处理程序已取代原插断向量时才可使用 int-number 。 
如果没有中断点处理程序而使用 int-number 将会发生错误。参阅 §11.2 
以取得更多资讯。 

如果没有加任何参数将会显示目前的设定。 

ACTION 的内定值是 HERE 。 

〔例〕 ACTION HERE 
这道指令设定当中断点条件成立时将返回 Soft-ICE 。 

WARN --- 设定 DOS/ROM BIOS 重入 (re-entrancy) 警告模式 

语法: WARN [ON | OFF] 

解说: 

WARN 指令是用来让 Soft-ICE 和会使用 DOS 或 ROM BIOS 的除错器一起使 
用。许多除错器使用 DOS 和 ROM BIOS 来做萤幕输出和读取按键。因为 DOS 和 
ROM BIOS 不完全能重入,若中断点发生在 DOS 或 ROM BIOS 在执行时,除错器 
可能无法正常的工作。 

如果设定 WARN ON 而且 ACTION 不是 HERE ,在真正动作发生前会先把控制 
权交给 Soft-ICE 。系统会显示目前 CS:IP 并让你决定是要继续或是回到 Soft- 
ICE 。一般而言,你应该选择回到 Soft-ICE 以继续除错。只有在你确定不会造 
成 DOS 或 ROM BIOS 重入时才可选择继续。 

在 Soft-ICE 和 DEBUG 、SYMDEB 及 CodeView 一起使用时应该把 WARN 设 
为 ON 。 

如果未加参数将会显示目前 WARN 的状态。 

WARN 的内定值是 OFF 。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -