Авторизация
Поиск по указателям
Rosenberg J.B. — How debuggers work
Обсудите книгу на научном форуме
Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Название: How debuggers work
Автор: Rosenberg J.B.
Аннотация: A total guide to debuggers: what they do, how they work, and how to use them to produce better programs "Debuggers are the magnifying glass, the microscope, the logic analyzer, the profiler, and the browser with which a program can be examined."-Jonathan B. Rosenberg
Debuggers are an indispensable tool in the development process. In fact, during the course of the average software project, more hours are spent debugging software than in compiling code. Yet, not many programmers really know how to constructively interpret the results they get back from debuggers. And even fewer know what makes these complex suites of algorithms and data structures tick. Now in this extremely accessible guide, Jonathan B. Rosenberg demystifies debuggers for programmers and shows them how to make better use of debuggers in their next projects.
Taking a hands-on, problem-solving approach to a complex subject, Rosenberg explains how debuggers work and why programmers use them. Most importantly, he provides practical discussions of debugger algorithms and procedures for their use, accompanied by many practical examples. The author also discusses a wide variety of systems applications, from Microsoft's Win32 debug API to a large parallel architecture.
Язык:
Рубрика: Computer science /Языки программирования /
Статус предметного указателя: Готов указатель с номерами страниц
ed2k: ed2k stats
Год издания: 1996
Количество страниц: 256
Добавлена в каталог: 22.11.2005
Операции: Положить на полку |
Скопировать ссылку для форума | Скопировать ID
Предметный указатель
/proc (UNIX) 63 65-67
16-bit debugging on 32-bit operating systems 72-77
16-bit debugging on 32-bit operating systems, under Windows 95 77
16-bit debugging on 32-bit operating systems, under Windows NT 73-77
3GL debuggers 14-15
4GL debuggers 14-15
Active breakpoints 27
Algorithms, breakpoint 107-8
Algorithms, step-related 129-32
Alpha processors 52
Animation 130
Application-level debuggers 17-19
Application-specific debuggers 19
Architecture of debuggers 21-37
Architecture of debuggers, kernel 31-33
Architecture of debuggers, main loop 34-36
Architecture of debuggers, operating system interface 33-34
Architecture of debuggers, overview of 21
Architecture of debuggers, threads and 180-82
Architecture of debuggers, user interface 22-31
Architecture of debuggers, user interface, breakpoints view 26-28
Architecture of debuggers, user interface, CPU or machine-level view 28-30
Architecture of debuggers, view, inspector and evaluator 30
Architecture of debuggers, view, source view 22 24-26
Architecture of debuggers, view, stack view 26
Architecture of debuggers, view, variables view 30
Assembly-level debugging 144-49
Assembly-level debugging, disassembly 145 47
Assembly-level debugging, memory dumps and 148 49
Assembly-level debugging, viewing registers 147 48
Attaching to running program 96 98
Automatic redisplay of expressions 155
Blocking OS debug call 35
BPT instruction 52-53
Branch delay slot 48-50
Breakpoint algorithms 107-8
Breakpoint(s) 5 39 107-19
Breakpoint(s), active 27
Breakpoint(s), breakpoint(s), hardware support for 40 42
Breakpoint(s), C++ templates and one-to-many problems and 118
Breakpoint(s), code patching by the debug breakpoint(s), ger and 118-19
Breakpoint(s), conditional 108-9
Breakpoint(s), data structures 108-9
Breakpoint(s), execution control and 101-2
Breakpoint(s), inactive 27
Breakpoint(s), internal 114-16
Breakpoint(s), logical 108
Breakpoint(s), physical 108
Breakpoint(s), PowerPC support for 51-52
Breakpoint(s), setting and activation of 110-11
Breakpoint(s), setting breakpoints 98-99
Breakpoint(s), side effects on 116-18
Breakpoint(s), temporary 113-14
Breakpoint(s), threads and 184
Breakpoint(s), unverified 27
Breakpoint(s), validation of 111-13
Breakpoints view 26-28
Browsing 7
C++ exceptions 132
C++ global constructors and destructors 128-29
Code hoisting 208
Code motion 208
Code patching by the debugger, breakpoints and 118-19
CodeGuard 192
Common subexpression elimination 210 218-19
Compiler-generated debugging information 157-60
Compiler-generated debugging information, catering to the debugger 158
Compiler-generated debugging information, different target machines 160
Compiler-generated debugging information, dividing the work 159-60
Compiler-generated debugging information, incremental processing 160
Conditional breakpoints 108-9
Constant folding 208-9
Constructors, C++ global 128-29
context 9-11
Context, assembly-level debugging 144-49
Context, discovering information about 135-49
Context, program stack 136-44
Context, source-level view 135
Context, tracing a corrupted stack 140-43
Context, unwinding nontraditional stacks 143-44
ContinueDebugEvent() 74
Controlling execution see Execution control
Copy propagation 209
Corrupted stack, tracing a 140-43
Corruption, memory (heap) 191-93
CPU support for debuggers see hardware support for debuggers
CPU view 11 28-30
CreateProcess() (Win 32 70
CreateThread() 176
CREATE_PROCESS_DEBUG_EVENT 181
CREATE_THREAD_DEBUG_EVENT 181
Cross jumping 211
data corruption 178
Data inspection 151-72
Data inspection, automatic redisplay of expressions 155
Data inspection, compiler-generated debug data inspection, ging information 157-60
Data inspection, parallel architectures and 201
Data inspection, scope resolution 154
Data sharing, inadvertent 178
Dead store elimination 209
Dead variable elimination 209
Deadlock 179
DebugActiveProcess() 74
DebugBreak() 74
Debuggee creating 95-96
Debuggee execution of see execution control
Debugger Callback class 82 86
Debuggers, basic principles of 7-11
Debuggers, basic principles of 4GL versus 3GL debuggers 14-15
Debuggers, basic principles of, application-specific versus in-circuit emulation debuggers, basic principles of, debuggers 19
Debuggers, basic principles of, classification of 11-19
Debuggers, basic principles of, context 9-11
Debuggers, basic principles of, debugging trails systems developments 11
Debuggers, basic principles of, Delphi debuggers 16
Debuggers, basic principles of, Heisenberg principle 7-8
Debuggers, basic principles of, OS kernel versus application-level debuggers 17-19
Debuggers, basic principles of, Smalltalk debuggers 15-16
Debuggers, basic principles of, source-level (symbolic) debuggers, basic principles of, versus machine-level 12
Debuggers, basic principles of, stand-alone debuggers versus integrated development environments 12-14
Debuggers, basic principles of, truthful debugging 8-9
Debuggers, basic principles of, Visual Basic debuggers 15
Debuggers, current state-of-the-art 5-7
Debuggers, overview of 1-5
Debuggers, overview of, how they are used 2-3
Debuggers, overview of, how they work 3-5
Debuggers, overview of, what they are 2
Debuggers, overview of, when to use them 3
Debuggers, overview of, who uses them 2
Debuggers, overview of, why they are used 3
Debugging tables (symbol tables) 157-60
DEBUG_EVENTs 180
Delphi debuggers 16
Destructors, C++ global 129
Disassembly 145 47
Disassembly pane 29
Disassembly views 6
Distributed object debugging 196-99
DosDebug() (OS/2) 67-70
Epilogue 140
Evaluation of expressions 151-53
Evaluation of expressions, automatic redisplay of expressions and 155
Evaluation of expressions, invoking functions during 155-57
Evaluator 30
Event logging by GUI debuggers 188-89
Event-driven stepping models 132-33
Exception events, execution control and 104-5
EXCEPTION_DEBUG_EVENT 180-81
Execution control 33 95-106
Execution control, continuing execution 105-6
Execution control, debuggee-generated events during execution 101-5
Execution control, debuggee-generated events during execution, breakpoint, single-step events 101-2
Execution control, debuggee-generated events during execution, data access (watchpoint) events 103
Execution control, debuggee-generated events during execution, exception events 104-5
Execution control, debuggee-generated events during execution, module load/unload events 104
Execution control, debuggee-generated events during execution, process creation/deletion events 102-3
Execution control, debuggee-generated events during execution, thread creation/deletion events 102
Execution control, initiating program execution 95-101
Execution control, initiating program execution, attaching to running program 96 98
Execution control, initiating program execution, causing the debuggee to run 99 101
Execution control, initiating program execution, creating the debuggee 95-96
Execution control, initiating program execution, setting a breakpoint 98-99
Execution control, terminating execution 106
ExitThread() 177
EXIT_PROCESS_DEBUG_EVENT 181
EXIT_THREAD_DEBUG_EVENT 181
Expression evaluation 33
Expressions, automatic redisplay of 155
expressions, evaluating 151-53
FatalExit() 74
Fault detection, hardware support for 43
Finish function 130-31
Flags plane 30
For-loops, single-line 126-27
FORTRAN 203
Frame pointer, MIPS processors and 48
GetThreadContext() 70 74 182
GetThreadSelectorEntry() 74
Graphical User Interface (GUI) applications 185-89
GUI debuggers, architecture of 186-88
GUI debuggers, desirable features of 188-89
GUI debuggers, Heisenberg Principle in 186
GUI debuggers, soft mode versus hard mode 187-88
GUI messages, tracking 117
Hard mode 187-88
Hardware support for debuggers 39-53
Hardware support for debuggers, architectures, Alpha 52-53
Hardware support for debuggers, architectures, Intel x86 and Pentium 45-47
Hardware support for debuggers, architectures, MIPS processor family 47-51
Hardware support for debuggers, architectures, PowerPC 51-52
Hardware support for debuggers, breakpoint support 40 42
Hardware support for debuggers, contemporary CPU debug hardware support for debuggers, architectures 45-53
Hardware support for debuggers, fault detection 43
Hardware support for debuggers, future architecture trends 53
Hardware support for debuggers, minimal basic requirements 39-40
Hardware support for debuggers, multiprocessors 44-45
Hardware support for debuggers, single-step 42 43
Hardware support for debuggers, watchpoint (data break point) 43
Heisenberg principle 7-8 186
Home tables 154
Hybrid OS debugging support 72-77
In-circuit emulation (ICE) 4 199
In-circuit emulation debuggers 19
In-line procedure expansion 210-11
Inactive breakpoints 27
Inadvertent data sharing 178
Incremental processing 160
Induction variable elimination 210 218
Inspector 30
Instruction decoding 124-25
Integrated development environ-ments 12-14
Intel x86 CPUs 45-47
Internal breakpoints 114-16
Interrupts 40
Ioctl() (UNIX) 65 66
Java, debugging support 77 79 81-94
Kernel debuggers 4 17-19 31-33
Logging at a breakpoint 116
Logging by GUI debuggers 188-89
Logical breakpoints 108
Loop unrolling 211
Mac OS debugger API 61 64-65
Machine-level debuggers 4 12
Machine-level view 28-30
Main loop 34-36
Memory (heap) corruption bugs 191-93
Memory dump pane 30
Memory dumps 148 49
Memory, and resource tracking, memory, integrated 192-93
Memory, automatic corruption detection 193
Messagepoints 188
MIMD (Multiple Instruction Multiple Data) architecture 44 45 201
MIPS processor family 47-51
Module load/unload events 104
MSR (Machine State Register) 51
Multiprocess applications 10
Multiprocessor architectures, breakpoint issues 203
Multiprocessor architectures, source stepping in 203-4
Multiprocessors, hardware support for 44-45
Multitasking, defined 174
multithreaded applications 10 35 57 173-84
Non-intrusiveness 7
NTVDM simulated environment 76-77
ObjectPascal 16
off-by-one error 10-11
One-to-many and many-to-one mapping problems 213
Operating system (OS) 55-94
Operating system (OS), generic OS-debugger operating system (OS), interaction model 56-57
Operating system (OS), hybrid OS debugging operating system (OS), support 72-77
Operating system (OS), interface 33-34
Operating system (OS), kernel debuggers 4 17-19
Operating system (OS), minimum required cooperation between debugger and 55-56
Operating system (OS), thread control 176-77
Operating system (OS), thread-created problems and 179-80
Optimized code, debugging (optimizations) 205-19
Optimized code, debugging (optimizations), difficulty of 207
Optimized code, debugging (optimizations), importance of 206
Optimized code, debugging (optimizations), keeping the optimizations on optimized code, debugging (optimizations), during debugging 207
Optimized code, debugging (optimizations), overview of 208-11
Optimized code, debugging (optimizations), overview of, code hoisting 208
Optimized code, debugging (optimizations), overview of, code motion 208
Optimized code, debugging (optimizations), overview of, common subexpression optimized code, debugging (optimizations), overview of, elimination 210
Optimized code, debugging (optimizations), overview of, constant folding 208-9
Optimized code, debugging (optimizations), overview of, copy propagation 209
Optimized code, debugging (optimizations), overview of, cross jumping 211
Optimized code, debugging (optimizations), overview of, dead store elimination 209
Optimized code, debugging (optimizations), overview of, dead variable elimination 209
Optimized code, debugging (optimizations), overview of, in-line procedure expansion 210-11
Optimized code, debugging (optimizations), overview of, induction variable elimination 210
Optimized code, debugging (optimizations), overview of, loop unrolling 211
Optimized code, debugging (optimizations), overview of, register allocation 210
Optimized code, problems created by 211-13
Optimized code, problems created by, no corresponding object code 213
Optimized code, problems created by, one-to-many and many-to-one mapping problems 213
Optimized code, problems created by, reported variable value is incorrect 212-13
Optimized code, problems created by, variable is unknown to debugger 212
Optimized code, RISC and 206-7
Optimizing compiler 9
OS/2, DosDebug() 67-70
OS/2, weaknesses in debug support 68-70
OutputDebugString() 74
Parallel architecture debugging 201-1
Pass counts 116-17
Pentium CPUs 45-47
performance analysis 7
Physical breakpoints 108
Post-mortem debuggers 200-201
PowerPC 51-52
Presentation Manager (OS/2) 70
Procedure calling conventions 137
Processes 35
Processes, creation/deletion events 102-3
processes, defined 174
Program stack 136-44
Prologue, unwinding the stack and 139 40
Ptrace() 60-61
Queues, single input 186
ReadProcessMemory() 74
Register allocation 210 217
Registers pane 30
Registers viewing 147 48
Реклама