Introduction

WinGDB is an extension for Visual Studio allowing to develop programs with GNU tools.

In the beginning, WinGDB was focused on debugging with GDB under Visual Studio (hence the name). Debugging is still one of the major functionalities, but WinGDB is continuously evolving into more versatile tool helping also in other development stages. Below is the list of important features supported the current WinGDB release.

Possible development scenarios covered by WinGDB include:

  • Native Linux applications.
  • Native Solaris applications.
  • Embedded Linux systems.
  • Linux-based mobile devices.
  • Embedded bare-metal devices, through OpenOCD.
  • Windows applications developed in MinGW or Cygwin environments.
Features
GDB debugger interface for Visual Studio
GDB debugger interface for Visual Studio
Project management
Project management
Remote development
Remote development
  • Remote source code browsing in the Visual Studio editor. The files are fetched as needed using SCP or SFTP protocol and cached over a session.
  • Remote creation and edition of source code files in the Visual Studio editor. Edited file is automatically sent back to the target machine after saving it.
  • Remote build - run make or other build command on remote or local machine. The output of compiler/linker dumps to Visual Studio Console and Tasks windows. User can comfortably navigate between errors and warnings in the source code.
  • Mapping source directories allows to map local directories with source code to their remote equivalents. Works with Samba shares, and SCP/SFTP synchronization.
  • File and directory transfer to and from remote machines. Download or upload directories and entire projects.
  • Support for X11 protocol forwarding allows to launch X11 programs easily and use local X-server for display. There is no need to open additional ports in the firewall. Also there is an option to start X-server automatically when remote X11 program is launched (this option supports Xming server).
Remote management
Remote management
  • Remote terminal - connect to remote machine and control it via secure shell, just from Visual Studio window.
  • Remote package manager - manage software packages on remote Linux/Unix machines. View available packages, install, uninstall with simple unified UI, same for each distribution. Supports: Apt (Debian, Ubuntu, Mint), Yum (Fedora, CentOS), Urpm (Mandriva, Mageia), Pacman (Arch, Manjaro), Zypper (OpenSUSE), Pkg (FreeBsd).
CMake integration
CMake integration
Debugging capabilities
Debugging capabilities
  • Launch process command, allowing to start debugging remote or local processes with GDB. The program to debug can be selected using a remote file system browser. Configuration includes, among others: process arguments, environment, working directory, additional source directories, custom initialization scripts.
  • Attach to process command, allowing attaching to remote or local processes with GDB. The process to attach can be selected using a remote process browser.
  • Examine core dump command, allowing to examine core dump with GDB.
  • Visualizers (aka "pretty printers" or "auto expanders") allow easy inspection of complex data structures, like STL containers. This feature is based on Python scripting available in GDB 7.0 and higher.
  • Custom initialization scripts for additional configuration (useful for embedded devices).
  • User runtime scripts to automate repetitive actions.
  • Basic debugger commands: Run, Step over/into/out, Break All, Continue, Run to cursor, Set Next Statement.
  • Breakpoints: setting in remote source files browsed locally. Setting by function name or through call-stack window. Additional breakpoint properties: conditions, hit counting, temporary disabling.
  • Data breakpoints (write-watchpoints in GDB nomenclature).
  • Call stack window.
  • Watch window.
  • Locals window.
  • Autos window.
  • Processes window.
  • Modules window.
  • Threads window.
  • Memory window.
  • Registers window.
  • Signals window.
  • Disassembler view.
  • Console window for debugged process I/O, emulating a XTerm terminal.
  • Generating core dump.
  • Follow fork mode for debugging daemons.
  • Exceptions.
  • Support for 64-bit applications.
  • Byte order support (Big-Endian/Little-Endian).
  • Controlling GDB Server on embedded Linux systems.
  • Simultaneous debugging of multiple processes.
  • Virtualized GDB command shell window for safe direct execution of GDB commands.
  • Support for 'sudo' command to launch GDB with elevated privileges.