microsoft / microsoft/vscode-cpptools
[OSX] lldb cannot read bitfield dwarf debug info generated by -mmacosx-version-min=10.11
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 6.2k
- Forks
- 1.7k
- Ø Merge
- 14 Std. 46 Min.
- Gemergte PRs (30 T.)
- 61
Beschreibung
Type: Debugger
Describe the bug
- OS and Version: MacOSX 10.4.1
- VS Code Version: 1.29.0
- C/C++ Extension Version: 0.20.1
- A clear and concise description of what the bug is.
Starting from MacOSX target 10.11, clang tunes it's debug information for lldb. This causes the version of lldb embedded in the cpptools extension to misreport bitfield values.
To Reproduce
#include <stdio.h>
int main() {
struct Test {
unsigned short a;
unsigned short b : 1;
unsigned short c: 15;
};
Test x = {0};
x.a = 5;
printf("%hu", x.b);
return 0;
}
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}
Steps to reproduce the behavior:
- Run
clang++ test.cc -mmacosx-version-min=10.11 -g - Place a breakpoint at line 10:
x.a = 5 - Launch debugger
- Step over
x.a = 5and see thatx.borx.cchanges value (lldb cannot find the right addresses for the bitfields.
Additional context
Compilation where older lldb works:
clang++ -c test.cc -mmacosx-version-min=10.10 -gclang++ -c test.cc -mmacosx-version-min=10.11 -ggdb
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den minimalen Fall test.cc mit clang++ unter Verwendung von -mmacosx-version-min=10.10 und 10.11 zu reproduzieren, und starte ihn anschließend mit der bereitgestellten .vscode/launch.json-Konfiguration. Vergleiche, wie der Debugger x.b und x.c meldet, nachdem du über x.a = 5; hinweggegangen bist; abgeschlossen bedeutet, dass die Bitfeldwerte für das 10.11-Ziel korrekt bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp, vscode
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100