|
.I files, 59
I386CPUHELP.DLL file (WDBG), 192
ICorDebug interface, 470
ICorProfilerCallback interface, 457–461
ICorProfilerInfo interface, 461, 469
IDiaSymbol interface, 203
IDIV instruction (x86), 328
IDTToolsOptionsPage interface, 433
Ierardi, Peter, 9, 624
ignorance as cause of bugs, 13–14
Ignore All Default Libraries property, 63
Ignore Assertion Always button (SUPERASSERT), 124
Ignore Once button (SUPERASSERT), 123
Ignore Standard Include Path property, 60
_IGNORE_BLOCK identifier, 680
ignoring assertions, 126–127
ILDASM (Microsoft Intermediate Language Disassembler), 249–266
alternative tools, 266
important instructions, list of, 259–265
branch, 263
comparison, 262
load, 260–261
store, 261–262
tree output descriptions, 251
ILT (Incremental Link Table), 735
image file execution options, 168–170
IMetaDataEmit interface, 461
IMetaDataImport interface, 461
!imgreloc extension command (WinDBG), 391
IMPLEMENT_MEMDEBUG macro, 685
impossible deadlines, 8
improper training
as cause of bugs, 13
knowing one's own tools, 20
IMUL instruction (x86), 328
in-process debugging and ExceptionMon utility, 469–474
INC instruction (x86), 328
INCLUDE environment variable, ignoring, 60
include files, listing, 62
Include Information in MAP File properties, 63
inconsistencies in user interface, 5
Incremental Link Table (ILT), 735
infinite recursion, 527
Initialize method (ICorProfilerCallback), 458–460
InitializeComponent method, 245
InitializeCriticalSectionAndSpinCount function, 588
initializing MemBumperValidator in C++, 692–693
injected code, debugging, 295
inline assembler, Visual C++ .NET, 309–310
inlining, 482–483, 484
in-process debugging and ExceptionMon utility, 469–474
installation program, 70
installing into GAC (global assembly cache), 436
instruction format, x86 CPUs, 307–309
instructions, x86 assembly language, 269–302
calling conventions, 316–322
common constructs, 336–337
structure and class references, 338
complete example, 339–341
debugging tips and tricks, 349–351
Disassembly window, using, 341–345
garbage code, 350
walking the stack manually, 346–347
format and memory addressing, 307–309
list of, 310–316, 327–336
comparing and testing, 329
data manipulation, 327–329
jumping and branching, 329
looping, 332
string manipulation, 333–336
registers, 303–307, 350
variables and parameters, 322–326
INT 3 instruction (x86), 313
integer underflow/overflow checking, 58
intellectual property protection, 250
IntelliSense, verifying breakpoints, 217
InterlockedIncrement function, 740
ISAPI filters and extensions, 569, 573–575
IsBad* functions, 114
IsDebuggerPresent function, 159, 160
IsWindow function, 114
|