1 Introduction
2 Preface
3 Common Terms
4 Software Debugging Basics
4.1 Debugging Purposes
4.2 Debugging Dependencies
4.3 Anti-Debugging Techniques
5 Entering Debugger Development
5.1 Debugger Overview
5.2 Debugger Example
6 Developing Go Instruction-Level Debugger
6.1 Process Launch
6.2 Process Attach
6.3 Launch & Attach
6.4 Debug Session
6.5 Disassembly
6.6 Adding Breakpoints
6.7 Listing Breakpoints
6.8 Removing Breakpoints
6.9 Clearing All Breakpoints
6.10 Stepping Operations
6.11 Running to Breakpoint
6.12 Printing Memory Data
6.13 Printing Register Data
6.14 Modifying Memory Data
6.15 Modifying Register Data
6.20 Tracing Multi-threaded Programs 1
6.21 Tracing Multi-threaded Programs 2
6.80 Understanding ASLR
6.99 More...
7 Advancing to Symbol-Level Debugger
7.1 Go Build Internals
7.2 Understanding ELF Files
7.3 Symbols & Symbol Tables
7.4 Symbol Resolution & Relocation
7.5 Loading
7.6 Go Standard Library debug/*
7.6.1 debug/elf
7.6.2 debug/gosym
7.6.3 debug/dwarf
7.7 Advancing to DWARF
7.7.1 Related Go Packages
7.7.2 How to Crack Those Details
7.7.3 Compiler Generated DWARF Data
7.7.4 Linker Generated DWARF Data
7.7.5 Understanding DWARF
8 Debug Information Standard: DWARF
8.1 DWARF Development History
8.2 DWARF Content Overview
8.3 DWARF Data Classification
8.4 DIE Detailed Introduction
8.4.1 DIE Describing Data and Types
8.4.2 Location Data
8.4.3 DIE Describing Executable Code
8.4.4 DIE Data Encoding
8.5 Other Debug Data
8.5.1 Accelerated Access
8.5.2 Line Number Table Information
8.5.3 Call Frame Information
8.5.4 Macro Information
8.5.5 Variable Length Data
8.5.6 Compressed DWARF Data
8.5.7 ELF Sections
8.6 DWARF Parsing and Applications
8.7 Summary
9 Developing Go Symbol-Level Debugger
9.1 Architecture Design
9.1.1 Modern Debugger Architecture
9.1.2 Frontend UI Layer Design
9.1.3 Service Layer Design
9.1.4 Backend Symbol Layer Design
9.1.5 Backend Target Layer Design
9.1.6 Logging System Design
9.2 Core Debugging Logic
9.2.00 Core Debugging Commands
9.2.01 Opening Debug Session
9.2.11 tinydbg attach
9.2.12 tinydbg attach+waitfor
9.2.13 tinydbg exec
9.2.14 tinydbg debug
9.2.15 tinydbg core - part1
9.2.15 tinydbg core - part2
9.2.16 tinydbg connect
9.2.17 tinydbg trace
9.2.21 tinydbg> disass
9.2.22 tinydbg> breakpoint
9.2.23 tinydbg> breakpoints
9.2.24 tinydbg> clear | toggle
9.2.25 tinydbg> clearall
9.2.26 tinydbg> next | step | stepi
9.2.27 Continue Execution
9.2.28 View Memory
9.2.29 View Registers
9.2.30 Call Frame Information
9.2.31 Variables & Type System
9.2.32 how ListFunctions work
9.2.32 funcs
9.2.33 Goroutines
9.2.34 Tracing Multi-threaded Programs
9.3 Advanced Feature Extensions
9.3.100 Integrating starlark
9.3.101 Tracing with eBPF
9.3.102 Implementing Syntax Highlighting
9.3.103 Implementing Paged Output
9.3.104 Reading Separately Stored DWARF Data
9.3.105 Automatic Source File Path Mapping
9.3.106 Implementing Target Process IO Redirection
9.3.107 Supporting User Preferences
9.3.108 Supporting Multi-client Debug Mode
9.3.109 Supporting Debug Activity Logging
10 Mainstream Debugging Technology Analysis
10.1 Debugger Development History
10.2 Logging System Development History
10.3 Metrics System Development History
10.4 Tracing System Development History
10.5 Bisect Development History
10.6 eBPF Development History
10.7 Record and Replay Development History
10.8 Distributed Debugging Development History
11 Acknowledgments
12 Appendix
12.1 Go Program Startup Process
12.2 Automatic Thread Tracing
12.3 git bisect
12.10 Compilation Toolchain/compile
12.11 Compilation Toolchain/asm
12.12 Compilation Toolchain/link
12.13 More: GNU build-id+gobuildid
12.14 More: Syntax Analysis vs Semantic Analysis
12.15 More: Why GDB Uses Symbol Table+DWARF
Published with GitBook
9.2.33 Goroutines
coming soon ...
results matching "
"
No results matching "
"