microsoft / microsoft/vscode-cpptools
When debugging multiple inferiors with gdb, if one inferior exits the full debug session stops
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 14h 46m
- PR unite (30g)
- 61
Descrizione
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
Other Extensions
No response
Additional Information
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Clonate il repository multiinferior-repro collegato e riproducete il problema usando la configurazione (gdb) Launch con detach-on-fork off e schedule-multiple on. Iniziate tracciando la gestione della sessione GDB/MI dell’estensione quando termina un inferior. Il lavoro è completato quando la sessione rimane attiva, si mette in pausa come previsto e consente ancora di passare all’inferior sopravvissuto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp, typescript, vscode
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100