Environment
- OS and version: Arch Linux with gdb 16.3
- VS Code: 1.103.1
- C/C++ extension: 1.26.3
- OS and version of remote machine (if applicable): n/a
- GDB / LLDB version: 16.3
Bug Summary and Steps to Reproduce
Bug Summary:
When debugging multiple inferiors in gdb, if one inferior exits the vscode debug session ends.
Steps to reproduce:
- git clone this repo: https://github.com/lostgoat/multiinferior-repro
- Set a breakpoint on the "parent exiting" line
- Start the "(gdb) Launch" debug task
When running gdb with the same configuration via commandline everything works correctly. Execution pauses after the child exits, and then one can use inferior <id> to switch back to the parent and keep debugging.
Debugger Configurations
{
"name": "(gdb) Launch",
"type": "cppdbg",
"preLaunchTask": "build test app",
"request": "launch",
"program": "${workspaceFolder}/test.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Keep both sides of fork",
"text": "set detach-on-fork off"
},
{
"description": "Allow multiple inferiors to run",
"text": "set schedule-multiple on"
}
],
"logging": { "engineLogging": true, "trace": true, "traceResponse": true }
},
Debugger Logs
Output window:
Starting test
parent running
waiting for child: 965664
parent waitpid returned: 0 - 0
child started
child looping: 0
child looping: 1
child looping: 2
child looping: 3
parent waitpid returned: 0 - 0
child looping: 4
child looping: 5
child looping: 6
child looping: 7
parent waitpid returned: 0 - 0
child looping: 8
child looping: 9
child exiting
Environment
Bug Summary and Steps to Reproduce
Bug Summary:
When debugging multiple inferiors in gdb, if one inferior exits the vscode debug session ends.
Steps to reproduce:
When running gdb with the same configuration via commandline everything works correctly. Execution pauses after the child exits, and then one can use
inferior <id>to switch back to the parent and keep debugging.Debugger Configurations
{ "name": "(gdb) Launch", "type": "cppdbg", "preLaunchTask": "build test app", "request": "launch", "program": "${workspaceFolder}/test.out", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Keep both sides of fork", "text": "set detach-on-fork off" }, { "description": "Allow multiple inferiors to run", "text": "set schedule-multiple on" } ], "logging": { "engineLogging": true, "trace": true, "traceResponse": true } },Debugger Logs