|
/01 switch (CL.EXE), 61
S command (WinDBG), 367
sampling, 456
SatelliteDllName registry key, 427
SatelliteDllPath registry key, 427
SCAS instruction (x86), 333
scheduling
automatic unit tests, 634. See also unit tests
to avoid bugs, 8
installation program, building, 70
project planning, 9–13
time to build debugging systems, 41–66
debug symbols, 42–46
lightweight diagnostics for release builds, 65–66
managed code warnings, 46–48
native code warnings, 48–51
training to avoid bugs, 13, 20
SCM (Service Control Manager), 567, 575
SDK, Debugging Tools for Windows, 354
Seconds To Wait Before Inserting SLEEP Statements option (Tester), 637
security
buffer overrun checks, 61
buffer security check switch, 714
intellectual property protection, 250
preventing debugger access to Win32 programs, 160
string processing, debugging, 713
windows services, 568
segment registers, x86 CPU, 304
SEH (structured exception handling), 514–518
SEH frame, creating/destroying, 336
Sells, Chris, 491, 767
SendMessage function, 593
SendMessageTimeOut function, 593
server application tracing (FastTrace), 148, 717–722
implementation, 721–722
merging trace logs, 720–721
Service Control Manager (SCM), 567, 575
service identity, setting, 571
services, Web (XML)
assertions in, 103–113
documentation comments, 415–423
physical access to binaries, 250
timeout exceptions, 249
tracing, 146–148
services, Windows
basic characteristics, 566–568
API functions, 566–567
security, 568
debugging, 568–575
Allow Service To Interact With Desktop, 570
attaching to processes, 571–575
core code, 569
service identity, setting, 571
startup code, 575
Set Alias command (WinDBG), 379
Set Current Process/Thread command (WinDBG), 367
Set Exception commands (WinDBG), 382
Set Local Context command (WinDBG), 372
Set Locale command (WinDBG), 385
Set Next Statement command, 232–233, 345
SetBreakpoint function, 196
SetCrashHandlerFilter function, 549
SetCriticalSectionAndSpinCount function, 588
SetDeadlockDetectionOptions function, 599
SetEnterLeaveFunctionHooks method (ICorProfilerInfo), 480
SetEventMask method (ICorProfilerInfo), 458, 469
SetFastTraceOptions function (FastTrace), 719
SetFunctionIDMapper method (ICorProfilerInfo), 483
SetServiceStatus function, 567
_set_se_translator API, 524–525
SetSingleStep function, 198
setting breakpoints (Visual Studio .NET Debugger), 214–228
Breakpoints dialog box, 217–222
Breakpoints window, 215
child breakpoints, 222
in dynamically loaded DLLs, 301
location breakpoint modifiers, 224–227
conditional expressions, 226–227, 236–240, 274–275
hit counts, 224–226
multiple on single line, 227–228
native code, 269–280
conditional expressions, 274–275
data breakpoints, 277–280
system and exported functions, 271–274
per-thread breakpoints, 240
quickly breaking on functions, 217–224
setting in dynamically loaded DLLs, 301
tips on, 215–217
setting breakpoints (WDBG), 195–200
setting breakpoints (WinDBG), 379–382
Breakpoint Disable command (WinDBG), 380
Breakpoint Enable command (WinDBG), 380
Breakpoint List command (WinDBG), 380
memory access breakpoints, 381–382
SettingsMaster add-in, 444–452
SetUnhandledExceptionFilter function, 525–527
Shanholtz, Jeff, 502
.SHELL command (WinDBG), 385
.SHELL_QUIT command (WinDBG), 385
SHL instruction (x86), 328
short deadlines, 8
Show Includes property, 62
Show Number Formats command (WinDBG), 385
Show Progress property, 64
/showincludes switch (CL.EXE), 62
SHR instruction (x86), 328
Shutdown method (ICorProfilerCallback), 458, 460
single stepping (WDBG), 195–200
skills required for debugging, 19–22
skip count modifiers (location breakpoints), 224–226
Smaller Type Check property, 61
smoke tests, 68–70
Smooth Working Set (SWS) utility, 62, 727–747
future of, 747
how to use, 728–733
order file, 732–733
running applications with, 731–732
setting up SWS compiles, 729–731
implementing, 734–746
file format and symbol enumeration, 738–744
_penter function, 734–738
run time, 744–746
SnapCurrentProcessMiniDump function, 556, 590
SnapFastTraceFiles function (FastTrace), 720
SOAPscope utility, 768
SoftICE debugger, 163–164
Solitaire, replacing boss's mail program with, 170
Solomon, David A., 389, 766
Son of Strike (SOS) support, 235, 396–403
source files
DCRT library, 669
extracting from MAP files, 498–499, 504
Source Insight utility, 768
spinning critical sections, 587–588
SplitParams function, 411
Spool, Jared, 12
Stack Back Trace section (Dr. Watson), 757
stacks
checking (/RTCs switch), 707
infinite recursion and, 527
stack frames, 313, 324
Stack Walking section (SUPERASSERT), 125
StackTrace class, 98
StackWalk64 API, 202, 208
walking (WDBG), 208
StackTrace class, 98
StackWalk64 API, 202, 208
Standard Template Library (STL), 49, 51, 374, 589
starg instruction (ILDASM), 261
StartDebugging function, 92
starting automatically in debuggers, 168–170
StartPoint property (code elements), 418
StartServiceCtrlDispatcher function, 567
startup code, services, 575
static versions of CRT libraries, 677–678
__stdcall call (x86), 317, 318
stelem instruction (ILDASM), 261
Step command (WinDBG), 374
Step Into/Over/Out (WDBG), 209–210
Step to Next Call command (WinDBG), 374
stepping through code
DebuggerStepThroughAttribute attribute, 245
SetSingleStep function, 198
WDBG debugger
basic functionality, 209–210
breakpoints and single stepping, 195–200
stack walking, 200–208
WinDBG debugger, 373–378
stepping through the stack, 346–347
stfld instruction (ILDASM), 262
STL (Standard Template Library), 49, 51, 374, 589
store instructions (ILDASM), 261–262
STOS instruction (x86), 333
STRESS.EXE program, 694
stressing applications, 694–697
string manipulation instructions (x86), 333–336
string processing, 713
Strip Private Symbols property, 64, 65
STRSAFE library, 713
Struct Member Alignment property, 60
structure references (x86), 338
structured exception handling (SEH), 514–518
SUB instruction (x86), 312
subexpression breakpoints, 217
Sullivan, Ed, 762
SUPERASSERT macro, 121–142, 299–301
implementation highlights, 127–142
SuperSaver add-in, 438–444
SuspendDeadlockDetection function, 600
Swift, Jonathan, 350
SWS (Smooth Working Set) utility, 62, 727–747
future of, 747
how to use, 728–733
order file, 732–733
running applications with, 731–732
setting up SWS compiles, 729–731
implementing, 734–746
file format and symbol enumeration, 738–744
_penter function, 734–738
run time, 744–746
SX commands (WinDBG), 382
!sym extension command (WinDBG), 365
SymbolEngine project, 203
symbols
debugging, 42–46
native debugging, 298. See also native code
SWS utility, enumerating, 738–744
symbol servers, building, 71–81
symbol tables and engines (WDBG), 200–208
SymbolEngine project, 203
Watch window formatting, 280–283
WinDBG debugger, 357, 362–366
building symbol server, 357
SYMSRV.DLL file, 73
SYMSTORE.EXE utility, 78
synchronization and multithreaded programming, 581–626
CreateThread and ExitThread functions, 588–589
DeadlockDetection utility, 595–624
DeadDetExt extension, 598, 610
future of, 624
high-level issues, 596–598
how to use, 598–601
implementing, 601–624
requirements for, 595–596
local storage, accessing, 337, 485
low-level multithreading, 583–587
multiprocessor machines, 592
names of threads, setting in native code, 276
obtaining thread identifiers, 240
TEB (thread environment block), 368
TIB (thread information block), 304, 336, 368
tips and tricks, 581–592
code reviews, 591
deadlock dumps in the field, 590
default memory manager, 589–590
discrete pieces, using, 583
minimizing amount of multithreading, 582
spinning critical sections, 587–588
testing on multiprocessor machines, 592
tracing performance, 718–719
System account, 568, 571
system DLLs, breakpoints on, 271–274
System.Exception class, 41
|