编号 |
章节 |
页码 |
确切位置 |
原文内容 |
更正 |
1 |
2.7.5 |
59 |
下数第5行 |
根据图2-11 |
根据图2-9 |
2 |
2.7.5 |
60 |
第13步的第6行 |
也就是说,页目录项的内容是0x3a6ae067,根据图2-9 |
也就是说,页表表项的内容是0x3a6ae067,根据图2-11 |
3 |
2.7.5 |
60 |
第14步的第1行 |
加上页内偏移(0xc8) |
加上页内偏移(0xc88) |
4 |
2.7.6 |
61 |
第3个自然段 |
PDE的高12位便是物理地址的高12位,因此将PDE的高12位加上线性地址的低24位...
|
PDE的高10位便是物理地址的高10位,因此将PDE的高10位加上线性地址的低22位...
|
5 |
25.6.3 |
766 |
第3个自然段 |
其中MSF代表Microsoft Stream Format, |
其中MSF代表Multi-Stream Format, |
6 |
6.1 |
134 |
下数第1、2段和图6-1的标题 |
P5_MC_TPYE |
P5_MC_TYPE |
7 |
12.9.3 |
354 |
第一个自然段最后一句 |
DNGHELP.DLL |
DBGHELP.DLL |
8 |
29.6.1 |
893 |
倒数第二个自然段 |
Process Serer |
Process Server |
9 |
24.6.3 |
737 |
本节最后一句话 |
感兴趣的读者可以阅读参考文献5和6 |
感兴趣的读者可以阅读参考文献2和3 |
10 |
30.12.2 |
964 |
本小节第2段第3行 |
与bp命令一样,如果指定序号,那么WinDBG会自动编排。 |
与bp命令一样,如果不指定序号,那么WinDBG会自动编排。 |
11 |
30.4.6 |
923 |
表30-5第4行 |
|*,当前进程的所有进程 |
|*,当前系统的所有进程 |
12 |
30.4.3 |
919 |
表30-3第6行 |
$ip ...x86即EIP,x64即eip |
$ip ...x86即EIP,x64即rip |
13 |
30.3.1 |
913 |
最上面一段的最后一句话 |
Dock0又有5个子窗口,即我们打开的5个工作窗口 |
Dock0又有4个子窗口,即我们打开的4个工作窗口 |
14 |
30.11 |
955 |
最末一句话 |
使用单步(Step)一词来指代前一种方式;使用跟踪(Trace)一词来指代后一种方式 |
使用单步(Step)一词来指代后一种方式;使用跟踪(Trace)一词来指代前一种方式 |
15 |
28.8.4 |
865 |
最末一句话 |
下一节将介绍Java平台的调试器标准,JPDA。 |
--在缩减篇幅时,JPDA一节被删除了,因此这一句话也应该删掉-- |
16 |
28.3.1 |
841 |
下数第二自然段的第一句话 |
8086 Mnitor是与名为CPU Suport Card的硬件一起工作的 |
8086 Mnitor是与名为CPU Support Card的硬件一起工作的 |
17 |
11.4.4 |
295 |
本小节第3、4自然段的第一句话 |
EXCEPTION_CONTINUE_EXECUTION(1)...EXCEPTION_EXECUTE_HANDLER(-1) |
EXCEPTION_CONTINUE_EXECUTION(-1)...EXCEPTION_EXECUTE_HANDLER(1) |
18 |
11.3.3 |
288 |
下数第二段的最后一句话 |
则说明Ccontinue失败 |
则说明Continue失败 |
19 |
12.8.6 |
349 |
下数第5行 |
Symbol Fole could not be found |
Symbol File could not be found |
20 |
12.2.5 |
317 |
清单12-5上面一句话 |
系统在该函数也提供了一个SHE处理器 |
系统在该函数也提供了一个SEH处理器 |
21 |
12.3.1 |
321 |
下数第2句话 |
总是在默认桌面(WINST0\Default) |
总是在默认桌面(Winsta0\Default) |
22 |
4.1.1 |
76 |
图4-1中的消息文字 |
User breakpoint called from code at0x401038 |
User breakpoint called from code at0x401028 |
23 |
22.13 |
642 |
第1段第4行 |
栈指针省略(22.5节) |
帧指针省略(22.5节) |
24 |
22.13 |
642 |
表22-2第2行第1列 |
建立栈指针 |
建立帧指针 |
25 |
8.3.3 |
180 |
表8-2下面一段的最后一句话 |
SYSENTER_ESP_MSR的值是8053cad0 |
SYSENTER_EIP_MSR的值是8053cad0 |
26 |
10.6.1 |
251 |
最下面一段的第一句话 |
如果当前进程不再被调试 |
如果当前进程不在被调试 |
27 |
9.4.4 |
205 |
倒数第二段的第一句话 |
在调试器处理好调试事件后,它会通过ContinueDebugEvent API间接调用间接调用... |
第二个简接调用该删除,重复了 |
28 |
12.4.2 |
332 |
第二自然段的第一句话 |
Send Erorr Report(发送错误提示) |
Send Error Report(发送错误报告)--另该段最后一长句中的Erorr也该为Error-- |
29 |
22.2.3 |
588 |
倒数第三行 |
其中,...000007c0是进程句柄 |
其中,...000007bc是进程句柄 |
30 |
22.3.3 |
592 |
倒数第三行 |
ESP寄存器总是指向位于栈定的数据 |
ESP寄存器总是指向位于栈顶的数据 |
31 |
10.4.1 |
241 |
清单10-6下方第三段的第一句 |
DebugActiveProcess API在Windwos 2000中的工作过程... |
DebugActiveProcess API在Windows 2000中的工作过程... |
32 |
12.2.2 |
312 |
清单12-3上方第4行 |
WinMainCRTStartup:UNICODE字符的... |
wWinMainCRTStartup:UNICODE字符的... |
33 |
11.2.1 |
281 |
下部的列表(List) |
...标志位有。 |
...标志位有:--另外,最后一个黑点(bullet)应该去除,使其成为正文-- |
34 |
13.5.1 |
380 |
13.5.1节的第4行 |
MB_MB_ICONASTERISK |
MB_ICONASTERISK |
35 |
12.9.4 |
354 |
12.9.4节的第1行 |
MiniDumpReadDump API |
MiniDumpReadDumpStream API |
36 |
12.5.2 |
337 |
第3行 |
NtWaitForMultipleObject |
NtWaitForMultipleObjects |
37 |
12.4.1 |
328 |
倒数第5行 |
enum_HARDERROR_RESPONSE |
enum _HARDERROR_RESPONSE--加一空格-- |
38 |
15.3.2 |
411 |
第2段第1行 |
那幺,... |
那么,--本章406、409、417页也各有一处这样的错误-- |
39 |
4.1.8 |
83 |
上数第13、15行 |
开始的5个字节651c202400都是一条指令...指令的第一个字节0x65 |
0x68 |
40 |
4.2.3 |
87 |
第2个整段的下数第3行 |
会自动将起始地址0xA003的低4位屏蔽掉 |
2 |
41 |
4.4.3 |
104 |
第2个整段后的汇编代码 |
EXHG SP, BP |
XCHG SP, BP |
42 |
2.4.6 |
46 |
第7行
|
RnD、RnW、RnB(n=8~15)来引用
|
RnD、RnW、RnL(n=8~15)来引用 |
43 |
7.5 |
161 |
第2行 |
开发阶段的主版才带有 |
开发阶段的主板才带有 |
44 |
9.6.2 |
220 |
第5段第3行 |
此后的Windows 2000 Service Patch |
此后的Windows 2000 Service Pack |
45 |
11.3.1 |
285 |
图11-3 |
调用ZwTerminateThread终止当前线程 |
调用ZwTerminateProcess终止当前进程 |
46 |
11.3.3 |
288 |
第4行 |
那么DbgkSendApiMessage会返回FALSE |
那么DbgkForwardException会返回FALSE |
47 |
11.3.3 |
289 |
下数第3段第2行 |
那么KiDispatchException会终止当前线程 |
那么KiDispatchException会终止当前进程并调用KeBugCheckEx发起蓝屏 |
48 |
11.4.2 |
291 |
下数第6行 |
没有下画线的关键字……加双下画线的关键字 |
没有下划线的关键字……加双下划线的关键字 |
49 |
11.5.3 |
307 |
第4段第4行 |
要求的Windows版本定义为0x500或更高的值(_WIN32_WINNT=0x0500) |
要求的Windows版本定义为0x0501或更高的值(_WIN32_WINNT=0x0501) |
50 |
16.8.4 |
439 |
图下方第2行 |
Bext Boot+Driver Delays |
Next Boot+Driver Delays |
51 |
18.1.5 |
465 |
下数第5行 |
除非特别指出“内核调试”,都是指...... |
除非特别指出,“内核调试”都是指...... |
52 |
23.4.1 |
655 |
图23-2下第6行 |
位于HeapAlloc函数...... |
位于HeapCreate函数...... |
53 |
23.12.3 |
696 |
第5行 |
如果定义了WINHEAP标志 |
没有定义WINHEAP标志 |
54 |
23.15.2 |
705 |
小节标题下第1行 |
从上面对_CrtMemDumpAllObjectsSince函数 |
从上面对_CrtDumpMemoryLeaks函数 |
55 |
24.4.2 |
722 |
倒数第2行 |
ExecutePPHandler |
ExecuteHandler |
56 |
25.6.6 |
768 |
第3段第2行 |
PEB_HEADER70 |
PDB_HEADER70 |
57 |
27.4.1 |
816 |
清单27-4上方第2行 |
交给SHE去处理 |
交给SEH去处理 |
58 |
30.6.4 |
929 |
第6行 |
调用操作系统的TerminateProcess API来终止当前线程 |
调用操作系统的TerminateProcess
API来终止当前进程 |
59 |
30.6.4 |
929 |
清单30-1下方第2行 |
会收到线程退出事件 |
会收到线程和进程退出事件 |
60 |
12.9.4 |
355 |
图12-14上方第2行 |
读取转出文件的过程 |
读取转储文件的过程 |
61 |
- |
833 |
下数第8行 |
没有明确的标准呢? |
没有明确的标准。 |
62 |
9.2.2 |
197 |
第3段第5行和第7行 |
DbgKmCreate-ProcessApi ... CREATE_THREAD_ DEBUG_EVENT |
DbgKmCreateProcessApi...CREATE_THREAD_DEBUG_EVENT(不该有换行符和空格) |
63 |
8.3.1 |
177 |
第4段第3-5行 |
,有时也被称为上下文切换(Context Switch)。在每个线程的KTHREAD结构中,有一个名为ContextSwitches的字段,专门用来记录这个线程的模式切换次数。 |
。在线程的KTHREAD结构中,定义了UserTime和KernelTime两个字段,分别用来记录这个线程在用户模式和内核模式的运行时间(以时钟中断次数为单位)。 |
64 |
8.3.3 |
182 |
表8-3第4行 |
SYSRETURN |
SYSRET |
65 |
22.1.1 |
582 |
下数第4自然段第3行 |
(这个切换过程通常被称为 Context Switch) |
(这个切换过程通常被称为 模式切换) |
66 |
12.3.2 |
326 |
代码清单中行号为266的那行后 |
[增加一行代码] |
return EXCEPTION_CONTINUE_SEARCH; |
67 |
2.4.4 |
43 |
表2-2第3行 |
详见2.11节 |
详见参考文献6 |
68 |
29.3.2 |
877 |
第2段第1句话 |
从图29-3可以看出 |
从图29-4可以看出 |
69 |
29.2.1 |
873 |
关于Emx86.dll的那段的第2行 |
链接到被调试系统 |
连接到被调试系统 |
70 |
22.3.4 |
594 |
下数第4行,步骤7 |
段选子 |
段选择子 |
71 |
23.4.1 |
655 |
倒数第6行 |
对管理器 |
堆管理器 |
72 |
23.8.1 |
672 |
图23-4下第3行 |
对管理器 |
堆管理器 |
73 |
23.6.2 |
664 |
第3段最后一行 |
HeapValidat |
HeapValidate |
74 |
23.6.2 |
665 |
第一整段第2行 |
对于调试版本也适用 |
对于发布版本也适用 |
75 |
23.7.3 |
669 |
清单23-7下第1行 |
比较两次采用中的每个UST记录,必将 |
比较两次采样中的每个UST记录,并将 |
76 |
27.3.1 |
809 |
下数第4行 |
RtlCpatureContext |
RtlCaptureContext,另外,用一行GetThreadContext中的t不该为粗体 |
77 |
27.3.1 |
810 |
第4行 |
栈帧基地值 |
栈帧基地址 |
78 |
26.5.2 |
796 |
页中间位置 |
/DEBU |
/DEBUG |
80 |
30.4.2 |
917 |
页中间位置 |
也可以写为?? const_cast |
也可以写为?? reinterpret_cast |
81 |
30.4.2 |
918 |
第19行 |
##CONTAINING_RECORD |
#CONTAINING_RECORD |
82 |
30.15.7 |
985 |
第3行 |
PAGE_READONLY |
PAGE_NOACCESS[原本PAGE_READONLY重复] |
83 |
30.18.3 |
996 |
清单30-22行号7、8 |
行7等号后的部分意外换到下一行 |
[应该在同一行,后面的行号该递减1] |
84 |
8.3.3 |
180 |
下数第16行 |
u ntdll... |
u ntdll!NtReadFile |
85 |
8.3.3 |
180 |
下数第5行 |
u ... |
u SharedUserData!SystemCallStub |
86 |
20.4.2 |
551 |
表格下第10行 |
...4385; error:164 |
...4385; error:4164 |
87 |
24.3.1 |
719 |
行号为62的那行代码 |
...( hLog, Disposition); |
...( hLog, nDisposition); |
88 |
24.4.2 |
722 |
倒数第2行 |
而ExecutePPHandler退化为只是... |
而ExecuteHandler退化为只是... |
89 |
9.4.5 |
207 |
第3行 |
的进程和线程来创建消息。... |
的进程和线程创建消息。... |
90 |
23.2.1 |
647 |
第14行 |
CStructXXX *pStruct=HeapAlloc(... |
CStructXXX *pStruct=(CStructXXX *)HeapAlloc(... |
91 |
22.2.3 |
588 |
本小节第6行 |
...,键入kv |
...,键入knL |
92 |
22.3.3 |
593 |
第2行 |
...,即清单20-2的第2行,... |
...,即清单22-4的第2行,... |
93 |
23.1 |
645 |
倒数第3行 |
23.10~23.12节详细介绍... |
23.11~23.15节详细介绍... |
94 |
23.1 |
645 |
第7行 |
ExFreePool-WithTag |
ExFreePoolWithTag |
95 |
11.1.1 |
274 |
第1行 |
LIDT和SIDT指令... |
LIDT指令... |
96 |
24.1 |
712 |
第7行 |
的异常分发函数的密切配合。 |
的异常分发函数相配合。 |
97 |
9.5.6 |
218 |
下数第3、4行 |
NtWaitForSingle-Object...NtRe-questWaitReplyPort... |
换行符号该去掉 |
98 |
9.3.3 |
202 |
下数第3段最后一句 |
KeThawAll-Threads... |
换行符号该去掉 |
99 |
10.6.9 |
258 |
第5行 |
Broke Window... |
Broken Window... |
100 |
22.1 |
581 |
倒数第6行 |
(第20.4节和20.5节详细讨论)。 |
(第22.4节和22.5节详细讨论)。 |
101 |
19.1.1 |
514 |
本小节最后一句 |
我们将在第19.2节详细介绍... |
我们将在第19.2和19.3节详细介绍... |
102 |
19.1.2 |
514 |
本页最后一句 |
我们将在第19.3节详细介绍... |
我们将在第19.4和19.5节详细介绍... |
103 |
2.5.3 |
48 |
倒数第5行 |
,所以当CPU访问DPL大于CPL(数值上)的一致代码段时,CPL保持不变。 |
,所以当CPU访问DPL小于CPL(数值上)的一致代码段时,CPL保持不变。 |
104 |
17.1.2 |
448 |
倒数第3、4行 |
0x124,是常量WHEA_INTERNAL_ERROR,...相关的还有WHEA_UNCORRECTABLE_ERROR,... |
0x124,是常量WHEA_UNCORRECTABLE_ERROR,...相关的还有WHEA_INTERNAL_ERROR,...(二者颠倒了) |
106 |
22.7.9 |
616 |
表22-1第7行,第3列 |
EAX、EDX |
ECX、EDX |
107 |
4.2.8 |
94 |
中间一段倒数第3行 |
当错误类异常发生时,CPU会将机器状态恢复到执行导致异常的指令被执行前的状态 |
当错误类异常发生时,CPU会将机器状态恢复到导致异常的指令被执行前的状态 |
108 |
4.2.1 |
84 |
图4-4下第2行 |
...都会导致一个非法指令异常(#UD), |
...都会导致一个无效指令异常(#UD), |
109 |
4.1.7 |
82 |
4.1.8上第5行 |
00401040,因此减1后... |
0040103a,因此减1后... |
110 |
22.8.3 |
622 |
汇编清单下第2段最后两个字 |
阀值: |
阈值: |
111 |
22.9 |
623 |
本节第1段第4行 |
栈底(stack base)以下的... |
栈底(stack base)在下的... |
112 |
附录A |
999 |
表中第4行第二列 |
应用程序代码不可以直接修改段寄存器 |
应用程序加载无效段寄存器导致异常 |
113 |
2.3 |
39 |
图2.2下方第一句倒数第一个单词 |
供系统固件(firmare)执行 |
供系统固件(firmware)执行 |
114 |
2.4.5 |
45 |
下数第6段 |
一个32位的中断描述符表寄存器IDTR |
一个48位的中断描述符表寄存器IDTR |
115 |
2.4.5 |
45 |
下数第5段 |
一个32位的全局描述符表寄存器GDTR |
一个48位的全局描述符表寄存器GDTR |