Debugging, Disassembly & Reversing in Linux for x64 Architecture
Gain insights into using GDB for debugging in Linux. Explore disassembly, memory investigation, and register updates. Learn about pointers, stack, and function parameters in x64 architecture.
I founded the pattern-oriented software diagnostics discipline (Systematic Software Diagnostics) and Software Diagnostics Institute (DA+TA: DumpAnalysis.org + TraceAnalysis.org), authored more than 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. I have more than 25 years of experience in software architecture, design, development, and maintenance in a variety of industries including leadership, technical and people management roles. In my spare time, I explore the mathematical and computer science foundations of Theoretical Software Diagnostics, application of formal logic, artificial intelligence, machine learning and data mining to diagnostics and anomaly detection, Software Narratology, its further development as Narratology of Things and Diagnostics of Things (DoT), Software Pathology, and Quantum Software Diagnostics. My practical focus is on software diagnostics engineering and diagnostics-driven development, diagnostics workflow and interaction. Recent interest areas also include cloud native computing, security, automation, functional programming, applications of category theory to software development and big data, and diagnostics of artificial intelligence.
Join 3.1 million developers at
What You'll Learn
- A familiarity with disassembly in GDB environment of simple C/C++ programs
- A good understanding of how to debug programs with a cross-sectional view to the contents of registers, stack and memory
- The ability to use GDB as a dump analysis tool
- Hands-on experience with C/C++ programs from the disassembly output
Learning Roadmap
2.
Memory, Registers, and Simple Arithmetic
Memory, Registers, and Simple Arithmetic
3.
Code Optimization
Code Optimization
3 Lessons
3 Lessons
4.
Number Representations
Number Representations
2 Lessons
2 Lessons
5.
Pointers
Pointers
6 Lessons
6 Lessons
6.
Bytes, Words, Double, and Quad Words
Bytes, Words, Double, and Quad Words
2 Lessons
2 Lessons
7.
Pointers to Memory
Pointers to Memory
3 Lessons
3 Lessons
8.
Logical Instructions and RIP
Logical Instructions and RIP
4 Lessons
4 Lessons
9.
Reconstructing a Program with Pointers
Reconstructing a Program with Pointers
3 Lessons
3 Lessons
10.
Memory and Stacks
Memory and Stacks
3 Lessons
3 Lessons
11.
Frame Pointer and Local Variables
Frame Pointer and Local Variables
4 Lessons
4 Lessons
12.
Function Parameters
Function Parameters
2 Lessons
2 Lessons
13.
More Instructions
More Instructions
2 Lessons
2 Lessons
14.
Function Pointer Parameters
Function Pointer Parameters
2 Lessons
2 Lessons
Dmitry Vostokov
Diagnostician. The Author of Diagnomicon.
Trusted by 3.1 million developers working at companies
Anthony Walker
@_webarchitect_
Evan Dunbar
ML Engineer
Software Developer
Carlos Matias La Borde
Souvik Kundu
Front-end Developer
Vinay Krishnaiah
Software Developer
Built for 10x Developers












Free Resources