microsoft / microsoft/vscode-cpptools
Disassembly View: wrong current instruction and wrong address in breakpoint command sent to GDB
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: Windows 11 22631.4460
- VS Code: 1.95.3
- C/C++ extension: v1.22.11
- OS and version of remote machine (if applicable): none
- GDB / LLDB version: GDB 15.2 from MSYS2
mingw-w64-ucrt-x86_64-gdb-multiarch
Bug Summary and Steps to Reproduce
Referencing the screenshots below:
- the
0x1b6breakpoint was created via the disassembly view, by clicking on the0x1b6row which I wanted to break on - T1: after restarting the target, the disassembly view shows the breakpoint bound to
0x00000142instead- notice the logs showing it indeed sent a GDB command to bind to
0x142(322 decimal)
- notice the logs showing it indeed sent a GDB command to bind to
- T1:
pcregister shows that GDB indeed halted on0x142, but the disassembly shows the current instruction to be0x000001a8 - T2: after stepping over once, the disassembly view changes to 64bit long addresses and does not show the disassembled instructions
- note how the current instruction address now matches the
pcregister - this happens quite often and seems to be consistent based on the instructions being debugged
- note how the current instruction address now matches the
Screenshot T1
Screenshot T2
I am developing for CH32V003 RISC-V 32bit MCU, using:
- custom built GCC 14.2 rv32ec-ilp32e (riscv32-unknown-elf) in MSYS2 UCRT64 from https://github.com/riscv-collab/riscv-gnu-toolchain
- gdb-multiarch from MSYS2 package
mingw-w64-ucrt-x86_64-gdb-multiarch 15.2-2 minichlink.exefrom https://github.com/cnlohr/ch32v003fun/tree/1ea96b14248628a209816963821b088dc8ecf506/minichlink as a GDB debug server
Debugger Configurations
launch.json:
{
"name": "Launch (minichlink)",
"type": "cppdbg",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "${workspaceRoot}/build/firmware.elf",
// "stopAtEntry": true,
"debugServerPath": "${workspaceFolder}/minichlink.exe",
"debugServerArgs": "-aG",
"MIMode": "gdb",
"miDebuggerPath": "E:/msys64/ucrt64/bin/gdb-multiarch.exe",
"miDebuggerServerAddress": "localhost:2000",
"setupCommands": [
{
"text": "-enable-pretty-printing",
"ignoreFailures": true,
},
],
"svdPath": "${workspaceFolder}/CH32V003xx.svd",
"logging": {
"engineLogging": true,
"trace": true,
"traceResponse": true
}
}
Debugger Logs
https://pastebin.com/gUCjBxwv
Other Extensions
Cortex-Debug and other related extensions are installed, but disabling all of them does not make a difference.
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
Inizia riproducendo il problema con la configurazione launch.json fornita ed esamina i log del motore GDB collegati nel report. Confronta l’indirizzo del breakpoint, il registro pc, l’istruzione corrente e il disassemblato dopo l’esecuzione passo-passo; il lavoro è completato quando l’indirizzo richiesto viene inviato a GDB e il disassemblato rimane corretto e valorizzato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp, typescript
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 38/100