microsoft / microsoft/vscode-cpptools

[OSX] lldb cannot read bitfield dwarf debug info generated by -mmacosx-version-min=10.11

Offen
#2,823 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug debugger
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:

  1. Run clang++ test.cc -mmacosx-version-min=10.11 -g
  2. Place a breakpoint at line 10: x.a = 5
  3. Launch debugger
  4. Step over x.a = 5 and see that x.b or x.c changes value (lldb cannot find the right addresses for the bitfields.

Additional context
Compilation where older lldb works:

  1. clang++ -c test.cc -mmacosx-version-min=10.10 -g
  2. clang++ -c test.cc -mmacosx-version-min=10.11 -ggdb

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.