microsoft / microsoft/vscode-cpptools

MinGW 13.2.0 toolchain's GDB (version 11.2), when run through the C/C++ Debug Adapter, cannot force the program to break without a defined breakpoint.

Open
#13,191 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug debugger help wanted
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment
  • OS and version:
    Windows 10 22H2 Build Version 19045.5371

  • VS Code:
    1.96.3

  • C/C++ extension:
    1.22.11

  • GDB / LLDB version:

GNU gdb (GDB) 11.2 (Provided with the MinGW version below.

  • MinGW build used:

https://github.com/niXman/mingw-builds-binaries/releases/tag/13.2.0-rt_v11-rev1

(This is an official build pointed to by MinGW's downloads page, under the MinGW-w64 Builds heading https://www.mingw-w64.org/downloads/)

Bug Summary and Steps to Reproduce

Bug Summary:

The bugger starts successfully, but then the program refuses to break unless a breakpoint is set prior to execution. The "pause" button does not work.

Why are we using MinGW on Windows? We're doing some work with an analysis tool that only supports GCC. Switching to MSVC is not a viable workaround.

Steps to reproduce:

  1. Configure a C++ "cppdbg" debug target with the MIMode and MIDebuggerPath pointing to MinGW's GDB.
  2. Run your debug target
  3. Attempt to force a break with the "pause" button
  4. The program will refuse to pause.
  5. Stop the program. Set a breakpoint.
  6. The program successfully breaks at the breakpoint.
Debugger Configurations
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Big Endian Network Converter (Windows)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.buildDirectory}\\tools\\bigendian_network_converter\\${command:cmake.buildType}\\bigendian_network_converter-windows-x86_64-${command:cmake.buildType}.exe",
            "args": [
                "-tftpip",
                "127.0.0.1",
                "-cfg",
                "ipport_common.cfg",
                "ipport.cfg",
                "bigendian_network_converter.cfg",
                "desktop.ocfg",
                "desktop_common.ocfg"
            ],
            "stopAtEntry": false,
            "cwd": "${command:cmake.buildDirectory}\\tools\\bigendian_network_converter\\${command:cmake.buildType}\\",
            "MIMode": "gdb",
            "miDebuggerPath": "${workspaceFolder}/bin/shell/mingw64/bin/gdb.exe",
            "environment": [
                {
                    // add the directory where our target was built to the PATHs
                    // it gets resolved by CMake Tools:
                    "name": "PATH",
                    "value": "${env:PATH}:${command:cmake.buildDirectory}\\tools\\bigendian_network_converter\\${command:cmake.buildType}\\"
                }
            ],
            "logging": { "engineLogging": true, "trace": true, "traceResponse": true }
        },
    ]
}
Debugger Logs
[debug_adapter_logs.txt](https://github.com/user-attachments/files/18540942/debug_adapter_logs.txt)
Other Extensions
  1. njpwerner.autodocstring
  2. Damien.autoit
  3. ms-vscode.cpptools-extension-pack
  4. Parasoft.vscode-cpptest
  5. twxs.cmake
  6. ms-vscode.cmake-tools
Additional Information

The nature of this work is sensitive, and the amount of information that I can provide about our codebase is limited. I would be happy to build smaller examples for the purposes of debugging this, however.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the cppdbg configuration with the listed MinGW GDB setup, then inspect the attached debug_adapter_logs.txt for the pause request and response. Compare behavior with and without a breakpoint; done means the VS Code pause action stops the running program without requiring a predefined breakpoint.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, vscode
Domain
developer-experience, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.