This is a revised ultra-premium color reprint of the original 2008 edition with minor corrections.
Behold! Thou art holding the divine book on bugs and debugging. If you are staring at this preface in a bookshop, ask not what it is; just buy it, go home, and savor each page.
The explanation might further cause severe brain concussions, especially if you are not programming savvy and have never before thought that bugs don't just occur in nature, but they copulate and live in computers, too. I'm not talking about cockroaches nesting in your computer, but about programming and hardware bugs. If you think you can withstand brain damage and not babble for the rest of your life, read on. We begin with definitions in layman's terms.
Dumps:
when a software program or code behaves unexpectedly and dies on you, it leaves a legacy behind, a big fecal matter...er...I mean...a dump; a crash dump.When the software application is about to die, the operating system scavenges the 'crap' out of it and delivers the dump to folks like us to analyze further. Debugging engineers will take this dump, load it into the analyzing tool (debugger), and sweat it out, sometimes for days and nights, to figure out what went wrong in the bowels.
Bugs:
any kind of error or behavioral deviations of the application/program/code/phew! from actual expectations is a bug.Here is a simple experiment to find a bug: try putting a finger into the live point of an electrical socket and throw the switch. If you are still alive, then it is a bug; the Electrical socket is not correctly wired. In the process, you may actually leave a dump (definition above). See, it is all making sense now. For a layman, it can't get any clearer than what is explained here.
Debugging Forensics:
dump analysis techniques to find the root cause of the death of an application. This term appears in the title to catch your attention and hopefully get you to buy the book.
Dr. Debugalov:
the quintessential human debugger.He can merely look at the color and size of the dump and tell you the root cause.
He is the inspiration for this book. Bugs are not just idle creatures sitting in the code; they are dynamic, growing, and multiplying as code evolves, creating higher-dimensional bugs. They have life. The lives of bugs and that of Dr. Debugalov are exploited in this book. This book brings humor to the world of debugging, and it is the first of its kind (if you know any others, we don't believe you. We insist: this book is really the first of its kind).
"Diamonds are forever, but bugs are an error."
- Narasimha Vedala (circa 2008)
Dmitry Vostokov is an internationally recognized expert, speaker, educator, scientist, inventor, and author. He founded the pattern-oriented software diagnostics, forensics, and prognostics discipline (Systematic Software Diagnostics) and Software Diagnostics and Observability Institute (DA+TA: DumpAnalysis.org + TraceAnalysis.org). Vostokov has also authored over 50 books on software diagnostics, anomaly detection and analysis, software and memory forensics, root cause analysis and problem solving, memory dump analysis, debugging, software trace and log analysis, reverse engineering, and malware analysis. He has over 30 years of experience in software architecture, design, development, and maintenance in various industries, including leadership, technical, and people management roles. Dmitry founded OpenTask Iterative and Incremental Publishing (OpenTask.com) and Software Diagnostics Technology and Services (former Memory Dump Analysis Services) PatternDiagnostics.com. In his spare time, he explores Software Narratology, Software Pathology, Software Morphology, Quantum Software Diagnostics, and Pattern-Oriented AI. His interest areas are theoretical software diagnostics and its mathematical and computer science foundations, application of formal logic, semiotics, artificial intelligence, machine learning, and data mining to diagnostics and anomaly detection, software diagnostics engineering and diagnostics-driven development, diagnostics workflow and interaction. Recent interest areas also include functional programming, cloud native computing, monitoring, observability, visualization, security, automation, applications of category theory to software diagnostics, development and big data, and diagnostics of artificial intelligence.