Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Johannes Kuhlmann

Rating No ratings yet

No description

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A practical field manual for developers who are tired of guessing at bugs: it turns debugging from intuition and luck into a repeatable, staged workflow. Best for working programmers, especially those facing intermittent, multithreaded, or hard-to-reproduce defects. 【Book Arc】 - **Opening (~0%–10%)**: Frames debugging as a discipline rather than a talent, defines what a bug is, and warns that stress, time pressure, and unrealistic expectations are part of the job. Introduces the book's four-part workflow (understand, reproduce, examine, fix). - **Early (~10%–32%)**: Covers the groundwork — writing and reading bug reports, separating mandatory from optional information, reproducing reliably, and optimizing build/deploy/load times so iteration is fast enough to investigate. Also begins cataloguing bug classes such as wrong timing/order, unclear requirements, and shared low-level dependencies. - **Middle (~32%–48%)**: Moves into examination techniques: using debuggers, breakpoints, exception handling, assertions, and logging. Emphasizes that any code change made to observe a bug can alter it, and that assumptions must be questioned. - **Late (~48%–70%)**: (Excerpts do not cover this range in detail.) Based on the stated structure, this stage corresponds to deeper examination strategies — minimal reproductions, external tools, code analysis, and bisecting changes across versions and commits. - **Ending (~70%–100%)**: (Excerpts do not cover this range.) The book's Part IV addresses fixing: deciding between urgent patches and sustainable fixes, and choosing among clean solutions, hacky workarounds, reimplementation, disabling functionality, or living with the bug. 【Key Takeaways】 - **Debugging is a workflow, not a talent** (Opening): The author's core argument is that systematic steps and strategies beat intuition when bugs resist obvious approaches. This reframing is the book's foundation. - **Manage expectations before you manage the bug** (Opening): Debugging has high cognitive load and unpredictable timelines; under-promise, protect focus time, and step away when stuck rather than grinding. - **Reproduction is the pivot point** (Early): Confirming a bug exists, is not intentional behavior, and can be triggered on demand separates real defects from misunderstandings and user error. - **Fast iteration is a debugging prerequisite** (Early): Build times, deployment, shader compilation, and data loading all directly limit how many experiments you can run; optimizing them is debugging work, not a distraction. - **Bug classes have recognizable signatures** (Early): Timing/order errors, unclear requirements, shared foundational dependencies (schedulers, RNGs, file access), and input-handling paradigms each point to specific places to look. - **Observation changes the system** (Middle): Adding logging, assertions, or breakpoints can make a bug vanish or mutate it — a real hazard, illustrated by a team that shipped with log statements that accidentally masked a timing bug. - **Know when to abandon a shortcut** (Early/Middle): The author suggests a rough ceiling of about an hour on guesswork before switching to slower but more reliable strategies. - **Bisection beats brute force** (Middle): Narrowing a bug to a commit using binary builds, then source builds, then isolating a single file or asset, is presented as a high-leverage technique. 【Reading Tips】 - Read the workflow chapters (Parts I–II) closely and treat them as a checklist; skim the tool-specific passages if you already know your debugger well. - Pay attention to the "In Practice" sidebars — they carry the most concrete, memorable lessons, including cautionary tales. - The build/deploy/load optimization material is easy to skip but valuable if your iteration cycle is slow; read it when that pain is real. - Keep the bug-class taxonomy handy as a diagnostic index: when stuck, match your symptom to a category and follow the suggested places to look. - Treat the fix chapter as decision guidance rather than code recipes — the value is in choosing the right response under time pressure. 【Coverage Limits】 This guide is based on stratified excerpts covering roughly the first half of the book; the later examination strategies and the entire fixing stage are described only from the book's stated structure, not from detailed excerpt content. Specific examples, code snippets, and chapter titles beyond those referenced are not covered.
Page 13
rect and official definition that is true for all software, perhaps by diving into the relevant ISO standard (ISO/IEC/IEEE 24765:2017, a reference of common...
View in text
Excerpt 2
production. Have a plan ready, ideally in written form, and distribute it to the team along with the original bug report. Answer the following questions: Whi...
View in text
Excerpt 3
s only one per button per update tick and ignores the rest. If your program misses input and you know these two likely causes, you'll quickly track down the...
View in text
Excerpt 4
ugger may automatically break when it encounters exceptions. A program's state can be challenging to analyze after an exception has been raised because the c...
View in text
Excerpt 5
nswers for your particular use case but may still find some advice that's relevant to your problem. Write a Great Bug Report As covered in "What Makes a Grea...
View in text
Excerpt 6
this: f1(): push rbp mov rbp, rsp sub rsp, 16 mov qword ptr [rbp - 8], 0 mov dword ptr [rbp - 12], 0 .LBB0_1: cmp dword ptr [rbp - 12], 100 jge .LBB0_4 mov r...
View in text
Excerpt 7
as battle-proven and have an air of being infallible. After all, if it survived this long and hasn't been blamed for any bugs, how could it have any issues?...
View in text
Excerpt 8
like to see or accept all the inputs you'd like to provide. External Tools External tools are nimbler than integrated ones. Because their codebases are small...
View in text
Tags
AI categories
ProgrammingSoftwareCode
Publisher: No Starch Press
Publish Year: 2026
Language: English
Pages: 368
File Format: PDF
File Size: 3.3 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…