|
T command (WinDBG), 374
tailcall exit function, 480
Tanenbaum, Andrew S., 767
Task Manager, 573, 727
TC command (WinDBG), 374
TCP/IP for remote native code debugging, 292–294
TEB (thread environment block), 368
technologies, understanding, 20
terminating MemBumperValidator in C++, 692–693
Terminal Services, Remote Desktop Connection
and Debugger.Launch, 107–108
test apps (unit tests), 35, 84, 151–153, 627–665
implementing, 638–665
keystroke and mouse recording, 653–665
notification and playback, 638–653
manual, 627–628
scheduling, 634
scripts for, 630–635
debugging, 634
future of, 665
recording, 635–638
requirements for, 629
test harness. See unit tests
TEST instruction (x86), 329
Tester utility (user interface testing)
implementing, 638–665
keystroke and mouse recording, 653–665
notification and playback, 638–653
manual, 627–628
scheduling tests, 634
scripts for, 630–635
debugging scripts for, 634
future of, 665
recording scripts for, 635–638
requirements for, 629
testers, role of, 84
testing
code verification, 84, 151–153
multithreaded applications, 592. See also
threading
plans for, 18
smoke tests, 68–70
user interface tests, 35, 84, 151–153, 627–665
future of, 665
implementing, 638–665
manual, 627–628
requirements of, 629
scheduling, 634
scripts for, 630–635
verifying bug fixes, 28
x86 instructions, 329
text aliasing (WinDBG), 379
TextWriterTraceListener class, 97
this call (x86), 317, 319
thread environment block (TEB), 368
thread identifiers, obtaining, 240
thread information block (TIB), 304, 336, 368
thread local storage, accessing, 337, 485
thread names, setting in native code, 276
Thread Status command (WinDBG), 368
threading (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
WinDBG, 366–371
!threads extension command (WinDBG), 398
!threadtoken extension command (WinDBG), 388
throw keyword, 518
TIB (thread information block), 304, 336, 337, 368
time intervals, WST and, 739
timeout exceptions, XML web services, 249
TimeOut property (web services), 249
timing code in Watch window, 283
.TLIST command (WinDBG), 369
TLIST.EXE utility, 355, 574
Toggle Source Line Support command (WinDBG), 374
!token extension command (WinDBG), 388
tool windows, add-ins, 430–432
toolbar buttons in add-ins, 429–430
tools, understanding your own, 20
tools for debugging, 27
bug tracking systems, 33, 38–40
version control systems, 33–38, 40
labeling, 37
when to make changes, 36–37
Trace and Watch Data command (WinDBG), 374–378
Trace class (System.Diagnostic), 95–96, 144–146
Trace command (WinDBG), 374
TRACE macro, 148
Trace to Next Call command (WinDBG), 374
TraceContext.Trace class, 146–148
TraceListener class, 96–103, 144
TraceSwitch class, 145–146
tracing, 142–148
ASP.NET applications, 146–148
DCRT library assertion support, 668
Event Tracing system, 66
EventLogTraceListener class, 97
FastTrace utility, 717–722
implementation, 721–722
merging trace logs, 720–721
flow tracing (Profiler API), 479, 484–488
native C++ applications, 148
.NET applications, 144–146
performance of, 718–719
TraceListener class, 96–103, 144
TraceSwitch class, 145–146
web services, 146–148
WinDBG debugger, 373–378
tracking
bugs, 38–40
heap memory (DCRT library), 667–676
features of, 668–669
new operator, 671–674
release CRT library vs., 677–678
turning on, 670
useful functions, 675–676
object lifetime, 524
version control, 33–38, 40
labeling, 37
when to make changes, 36–37
training to avoid bugs, 13, 20
translating EXCEPTION_POINTERS structures, 551–553
trimming white space from files, 438–444
trust-and-verify approach, 84, 151–153
try keyword, 518
__try/__except statements, 514
__try/__finally statements, 514
TuneModule function (SWS), 744
tuning (performance), 6
of BUGSLAYERUTIL.DLL, 678
critical sections, spinning, 587–588
data breakpoints, 277–280
default memory manager, 589–590
exception monitoring in native code, 296–298
exceptions, when to use, 475
logging depth and, 66
mixed-mode debugging, 247
multithreaded programming 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
operating system heap checking, 697
relocated DLLs, 54
server application tracing, 718–722
smoke test benchmark, 69
timing code in Watch window, 283
tools, 27
working set tuning, 723–747
SWS utility, 727–747
WST utility, 726
types, expanding automatically (Watch window)
managed code, 241–243
native code, 283–291
|