Errata for Windows Debugging: Practical Foundations

First printing, Revision 1.1

--- Page 30

Type:
    Unclear description
Original text:
    imul [b]
Reported by:
    Vijesh Vijay
BugFix:
    imul eax, [b]

--- Page 36

Type:
    Missing text
Original text:
Reported by:
    author
BugFix:
    Also after that we need to execute the command .reload to reload symbols from the symbol server if necessary.

--- Page 47

Type:
    Spelling
Original text:
    if we have one stone only of have thirteen stones
Reported by:
    author
BugFix:
    if we have one stone only or have thirteen stones

--- Page 56

Type:
    Grammar
Original text:
    we use interpret contents of EAX register
Reported by:
    author
BugFix:
    we interpret contents of EAX register

--- Pages 57, 92, 108, 133, 145

Type:
    Missing text
Original text:
    0:000> .symfix c:\mss
Reported by:
    author
BugFix:
    0:000> .symfix c:\mss
    0:000> .reload

--- Page 60

Type:
    Spelling
Original text:
    the first for instructions
Reported by:
    author
BugFix:
    the first four instructions

--- Pages 60, 64, 67

Type:
    Incorrect code
Original text:
    mov eax, 1
    mov ebx, 1
Reported by:
    author
BugFix:
    mov [eax], 1
    mov [ebx], 1

--- Page 61

Type:
    Grammar
Original text:
    values of a and b has changed
Reported by:
    author
BugFix:
    values of a and b have changed

--- Page 71

Type:
    Grammar
Original text:
    If we want to use hexadecimal number
Reported by:
    author
BugFix:
    If we want to use hexadecimal numbers

--- Page 71

Type:
    Missing text
Original text:
Reported by:
    author
BugFix:
    or the suffix ‘h’ is used to disambiguate between decimal and hexadecimal, for example:
mov [a], 52h

--- Page 73

Type:
    Missing text
Original text:
    Windows definitions: DWORD, ULONG
Reported by:
    author
BugFix:
    Windows definitions: DWORD, UINT, ULONG

--- Page 102

Type:
    Grammar
Original text:
    There are several ways put a zero value
Reported by:
    author
BugFix:
    There are several ways to put a zero value

--- Page 115

Type:
    Incorrect terminology
Original text:
    statically declared and defined
Reported by:
    author
BugFix:
    globally declared and defined

--- Page 127

Type:
    Grammar
Original text:
    is called is JMP (Jump)
Reported by:
    author
BugFix:
    is called JMP (Jump)

--- Page 130

Type:
    Style
Original text:
    some examples adopted from Intel manuals and some examples:
Reported by:
    author
BugFix:
    some examples adopted from Intel manuals:

--- Page 131

Type:
    Incorrect number
Original text:
    some value in 0x10001000 – 0x10001100 range, say 0x10001000.
Reported by:
    author
BugFix:
    some value in 0x10001000 – 0x10001100 range, say 0x10001020.

--- Page 134

Type:
    Grammar
Original text:
    inside func3 to executing the explicit breakpoint:
Reported by:
    author
BugFix:
    inside func3 to execute the explicit breakpoint:

--- Page 158

Type:
    Incorrect code
Original text:
    ret ; return 0
Reported by:
    author
BugFix:
    ret ; return (return value, b)

--- Page 164

Type:
    Incorrect terminology
Original text:
    the caller expects 3 parameters instead of 2:
Reported by:
    author
BugFix:
    the callee expects 3 parameters instead of 2:

--- Page 165

Type:
    Incorrect number
Original text:
    Picture 12.
Reported by:
    author
BugFix:
    Picture 12.1

--- Page 173

Type:
    Grammar
Original text:
    32-bit register have
Reported by:
    author
BugFix:
    32-bit registers have

First printing, Revision 2.0

--- Page 30

Type:
    Unclear description
Original text:
    imul [b]
Reported by:
    Vijesh Vijay
BugFix:
    imul eax, [b]

--- Page 59

Type:
    Incorrect reference
Original text:
    Picture 2:
Reported by:
    Jean Brisard
BugFix:
    Picture 4.2:

--- Page 152

Type:
    Incorrect code
Original text:
    // [EBP-8] = var1 (DWORD)
Reported by:
    Luca Hall
BugFix:
    // [EBP-8] = var2 (DWORD)