Advanced C/C++ Debugging on Windows Workshop
All Tracks and Workshops : 1100 ILS + VAT
Modern C++ Workshop: 2300 ILS + VAT
Schedule: 1 day
Description
You will learn and practice how to debug Windows Native Applications written in C/C++ using
Visual Studio and WinDbg. This is intended as an overview and expose but will foucs on the
main tools and techniques in depth.
The workshop will include hands-on practice focusing on debugging cardinal problems using
the covered tools in the workshop.
Use standard and advanced Visual Studio debugging features to debug native
applications written in C/C++.
Use WinDbg to debug native applications.
Learn how to analyze and solve performance and deadlock issues.
Audience
Software engineers with hands-on experience using C/C++ in software development on the
Windows platform, site Reliability engineers and other technically related personnel.
Prerequisites
Experience with C/C++ programming.
Experience programming Windows native applications.
Experience using Visual Studio.
Familiarity with the WIN32 APIs
Familiarity with Windows operating systems concepts such as virtual memory, multithreading, and synchronizations.
Familiarity with computer architecture concepts such as CPU registers, cache and main memory
Syllabus
- Introduction to Debugging on Windows
a. Visual Studio as source level debugger
b. Types of bugs - Advanced Visual Studio
a. Static code analysis.
b. Debugging symbols and symbols server configuration.
c. Visual Studio built-in tools for debugging, tracing, and performance.
d. Practicing native debugging commands and tools in VS. - Debugging tools for Windows kit
a. Getting and installing debugging tools for Windows
b. Debuggers in the package.
c. Application Verifier
d. Other tools: Gflags, DumpCheck, LogViewer, UMDH and others. - Windows Internals
a. Windows Architecture
b. Virtual Memory and address space
c. Windows executables and DLLs loading and terminating process
d. Processes and Threads
e. SHE – Windows structured exception handling. - Debugging with WinDbg
a. Introduction to WinDbg.
b. Configuring WinDbg for live user mode debugging.
c. Using WinDbg to debug live processes.
d. WinDbg basic commands.
e. Calling conventions and parameter passing - Assembly Language Fundamentals
a. Why do you need basic knowledge of machine code?
b. Basic Machine code instructions.
c. Using WinDbg to disassemble code. - Process Dump Analysis
a. Configuring WinDbg for dump analysis.
b. Using WinDbg to debug dumps.
c. WinDbg Extensions. - Sysinternals tools
a. Tools included in the package.
b. Using the tools without installation. - Memory Management
a. Heap Allocations.
b. Analyzing Memory Leaks.
c. Tools: Application Verifier, UMDH, VMMap - Windows Performance Monitor
a. Creating a baseline.
b. Detecting anomalies.
c. Counters to watch for specific debug scenarios.
d. WPT – Windows Performance Toolkit - Debugging techniques for specific Scenarios
a. CPU Hang.
b. Deadlocks.
c. Exception Crash.
d. Memory Leaks.
e. Resource Leaks.