Debugging Applications for MicrosoftВ® .NET and Microsoft WindowsВ® (Pro-Developer)

I

.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

Категории