Watch Window expressions can fail due to `permissive-` compiler flag

Abierto
#14,455 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
cpp, vscode
Área
devtools

Línea de trabajo

Descarga y ejecuta VSCodeWatchWindowTest.zip usando la tarea de compilación de tasks.json y la configuración de launch.json. Empieza en la línea 19 de main.cpp y compara los resultados de Watch/Locals con la configuración del compilador utilizada por build.bat, especialmente el indicador permissive-. Se considera terminado cuando result se evalúa como su contenido en el Watch Window en lugar de informar de un identificador no definido.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

debugger
Environment
  • OS and Version: Microsoft Windows 10 Pro (Version 10.0.19045 Build 19045)
  • VS Code Version: 1.120.0
  • C/C++ Extension Version: 1.32.2
  • Visual Studio Version: Community 2026 version 18.5.2
Bug Summary and Steps to Reproduce

Bug Summary:
Certain expressions have started failing to display in the Watch Window for me - please see attached repro code and instructions, thanks!

Image

Steps to reproduce:

  1. Requires Visual Studio installation to call cl.exe
  2. Download and unzip example code: VSCodeWatchWindowTest.zip
  3. Launch VS Code from x64 Native Tools Command Prompt for VS
  4. Open example code
  5. Run default build task
  6. Place breakpoint in main.cpp on line 19
  7. Start debugging
  8. Look in locals window - result evaluates as An unspecified error has occurred. If you add it to the watch window it is shown as identifier "result" is undefined
    Expected behavior:
    Contents of result are displayed properly
Debugger Configurations
tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "./build.bat",
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "clear": true
            }
        },
    ]
}

launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/main.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "logging": { 
                "engineLogging": true,
                "trace": true,
                "traceResponse": true
            },
            "console": "internalConsole"
        }
    ]
}
Debugger Logs
<- (E) {"seq":3,"type":"event","event":"output","body":{"category":"console","output":"------------------------------------------------------------------------------\nYou may only use the C/C++ Extension for Visual Studio Code with Visual Studio\nCode, Visual Studio or Visual Studio for Mac software to help you develop and\ntest your applications.\n------------------------------------------------------------------------------\n","severity":"ok"}}
------------------------------------------------------------------------------
You may only use the C/C++ Extension for Visual Studio Code with Visual Studio
Code, Visual Studio or Visual Studio for Mac software to help you develop and
test your applications.
------------------------------------------------------------------------------
<- (R) {"seq":5,"type":"response","request_seq":2,"success":true,"command":"launch"}
-> (C) {"type":"response","seq":1,"command":"handshake","request_seq":2,"success":true,"body":{"signature":"625UmCEnCH6afVSxs9jB9jEatNAO2Zna7Ez9NQ637quWD0="}}
<- (E) {"seq":8,"type":"event","event":"initialized","body":{}}
-> (C) {"command":"setBreakpoints","arguments":{"source":{"name":"main.cpp","path":"c:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp"},"lines":[19],"breakpoints":[{"line":19}],"sourceModified":false},"type":"request","seq":3}
<- (E) {"seq":11,"type":"event","event":"output","body":{"category":"telemetry","output":"vs/diagnostics/debugger/vsdbg/BreakpointAdded","data":{"VS.Diagnostics.Debugger.vsdbg.OSFamily":"Windows","VS.Diagnostics.Debugger.vsdbg.Version":"17.13.20115.1 commit:2813ca575686dd74c298baf93407e693cefabef1","VS.Diagnostics.Debugger.vsdbg.BreakpointAdded.HasHitCount":false,"VS.Diagnostics.Debugger.vsdbg.WindowsVersion":"10.0.19045","VS.Diagnostics.Debugger.vsdbg.AdapterId":"cppvsdbg","VS.Diagnostics.Debugger.vsdbg.BreakpointAdded.BreakpointType":"Source","VS.Diagnostics.Debugger.vsdbg.BreakpointAdded.HasLogMessage":false,"VS.Diagnostics.Debugger.vsdbg.BreakpointAdded.HasCondition":false}}}
<- (R) {"seq":13,"type":"response","request_seq":3,"success":true,"command":"setBreakpoints","body":{"breakpoints":[{"id":1,"verified":false,"message":"The breakpoint is pending and will be resolved when debugging starts.","line":19}]}}
-> (C) {"command":"setFunctionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":4}
<- (R) {"seq":16,"type":"response","request_seq":4,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
-> (C) {"command":"setInstructionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":5}
<- (R) {"seq":19,"type":"response","request_seq":5,"success":true,"command":"setInstructionBreakpoints","body":{"breakpoints":[]}}
-> (C) {"command":"setExceptionBreakpoints","arguments":{"filters":[],"filterOptions":[]},"type":"request","seq":6}
<- (R) {"seq":22,"type":"response","request_seq":6,"success":true,"command":"setExceptionBreakpoints","body":{}}
-> (C) {"command":"configurationDone","type":"request","seq":7}

<- (E) {"seq":25,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/ProcessCreate","data":{"VS.Diagnostics.Debugger.vsdbg.OSFamily":"Windows","VS.Diagnostics.Debugger.vsdbg.Version":"17.13.20115.1 commit:2813ca575686dd74c298baf93407e693cefabef1","VS.Diagnostics.Debugger.vsdbg.WindowsVersion":"10.0.19045","VS.Diagnostics.Debugger.vsdbg.TargetArchitecture":"AMD64"}}}
<- (E) {"seq":27,"type":"event","event":"process","body":{"name":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\build\\main.exe","systemProcessId":17092,"startMethod":"launch","pointerSize":64}}
<- (E) {"seq":29,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":1,"verified":false,"message":"No symbols have been loaded for this document.","line":19}}}
<- (R) {"seq":31,"type":"response","request_seq":7,"success":true,"command":"configurationDone"}
-> (C) {"command":"threads","type":"request","seq":8}
<- (R) {"seq":34,"type":"response","request_seq":8,"success":true,"command":"threads","body":{"threads":[]}}
<- (E) {"seq":36,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\build\\main.exe'. Symbols loaded.\n","outputRoutingOption":"outputChannel"}}
main.exe (17092): Loaded 'C:\Users\Kevin\Documents\Programming\VSCodeWatchWindowTest\build\main.exe'. Symbols loaded.
<- (E) {"seq":38,"type":"event","event":"module","body":{"reason":"new","module":{"id":1000,"name":"main.exe","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\build\\main.exe","isUserCode":true,"symbolStatus":"Symbols loaded.","symbolFilePath":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\build\\main.pdb"}}}
<- (E) {"seq":40,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":1,"verified":true,"source":{"name":"main.cpp","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"5916b8062e703c3220e18ca4d4c4e11e7ed826dc9fc4a89fb302ab90b270a1ee"}]},"line":19,"endLine":19,"instructionReference":"0x00007FF67163102B","offset":0}}}
<- (E) {"seq":42,"type":"event","event":"thread","body":{"reason":"started","threadId":12696}}
<- (E) {"seq":44,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Windows\\System32\\ntdll.dll'. \n","outputRoutingOption":"outputChannel"}}
main.exe (17092): Loaded 'C:\Windows\System32\ntdll.dll'. 
<- (E) {"seq":46,"type":"event","event":"module","body":{"reason":"new","module":{"id":1001,"name":"ntdll.dll","path":"C:\\Windows\\System32\\ntdll.dll","isUserCode":false,"version":"10.0.19041.7291 (WinBuild.160101.0800)","symbolStatus":"Cannot find or open the PDB file."}}}
<- (E) {"seq":48,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Windows\\System32\\kernel32.dll'. \n","outputRoutingOption":"outputChannel"}}
main.exe (17092): Loaded 'C:\Windows\System32\kernel32.dll'. 
<- (E) {"seq":50,"type":"event","event":"module","body":{"reason":"new","module":{"id":1002,"name":"kernel32.dll","path":"C:\\Windows\\System32\\kernel32.dll","isUserCode":false,"version":"10.0.19041.7291 (WinBuild.160101.0800)","symbolStatus":"Cannot find or open the PDB file."}}}
<- (E) {"seq":52,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Windows\\System32\\KernelBase.dll'. \n","outputRoutingOption":"outputChannel"}}
main.exe (17092): Loaded 'C:\Windows\System32\KernelBase.dll'. 
<- (E) {"seq":54,"type":"event","event":"module","body":{"reason":"new","module":{"id":1003,"name":"KernelBase.dll","path":"C:\\Windows\\System32\\KernelBase.dll","isUserCode":false,"version":"10.0.19041.7291 (WinBuild.160101.0800)","symbolStatus":"Cannot find or open the PDB file."}}}
<- (E) {"seq":56,"type":"event","event":"thread","body":{"reason":"started","threadId":14600}}
<- (E) {"seq":58,"type":"event","event":"thread","body":{"reason":"started","threadId":11936}}
<- (E) {"seq":60,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Windows\\System32\\vcruntime140d.dll'. \n","outputRoutingOption":"outputChannel"}}

main.exe (17092): Loaded 'C:\Windows\System32\vcruntime140d.dll'. 
<- (E) {"seq":62,"type":"event","event":"module","body":{"reason":"new","module":{"id":1004,"name":"vcruntime140d.dll","path":"C:\\Windows\\System32\\vcruntime140d.dll","isUserCode":false,"version":"14.50.35719.0","symbolStatus":"Cannot find or open the PDB file."}}}
<- (E) {"seq":64,"type":"event","event":"output","body":{"category":"console","output":"main.exe (17092): Loaded 'C:\\Windows\\System32\\ucrtbased.dll'. \n","outputRoutingOption":"outputChannel"}}
main.exe (17092): Loaded 'C:\Windows\System32\ucrtbased.dll'. 
<- (E) {"seq":66,"type":"event","event":"module","body":{"reason":"new","module":{"id":1005,"name":"ucrtbased.dll","path":"C:\\Windows\\System32\\ucrtbased.dll","isUserCode":false,"version":"10.0.26100.7705 (WinBuild.160101.0800)","symbolStatus":"Cannot find or open the PDB file."}}}
<- (E) {"seq":68,"type":"event","event":"thread","body":{"reason":"started","threadId":19060}}
<- (E) {"seq":70,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/Launch","data":{"VS.Diagnostics.Debugger.vsdbg.OSFamily":"Windows","VS.Diagnostics.Debugger.vsdbg.Version":"17.13.20115.1 commit:2813ca575686dd74c298baf93407e693cefabef1","VS.Diagnostics.Debugger.vsdbg.VisualizerFileUsed":false,"VS.Diagnostics.Debugger.vsdbg.WindowsVersion":"10.0.19045","VS.Diagnostics.Debugger.vsdbg.TargetType":"Live","VS.Diagnostics.Debugger.vsdbg.AdapterId":"cppvsdbg","VS.Diagnostics.Debugger.vsdbg.SourceFileMappings":0,"VS.Diagnostics.Debugger.vsdbg.Launch.DebuggerStartTime":187}}}
<- (E) {"seq":72,"type":"event","event":"stopped","body":{"reason":"breakpoint","threadId":12696,"allThreadsStopped":true,"hitBreakpointIds":[1],"source":{"name":"main.cpp","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp"},"line":19,"column":0}}
-> (C) {"command":"threads","type":"request","seq":9}
<- (R) {"seq":75,"type":"response","request_seq":9,"success":true,"command":"threads","body":{"threads":[{"id":12696,"name":"Main Thread"},{"id":14600,"name":"ntdll.dll thread"},{"id":11936,"name":"ntdll.dll thread"},{"id":19060,"name":"ntdll.dll thread"}]}}
-> (C) {"command":"stackTrace","arguments":{"threadId":12696,"startFrame":0,"levels":20},"type":"request","seq":10}
<- (R) {"seq":78,"type":"response","request_seq":10,"success":true,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"name":"main.exe!doFoo(vec3 pos) Line 19","source":{"name":"main.cpp","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"5916b8062e703c3220e18ca4d4c4e11e7ed826dc9fc4a89fb302ab90b270a1ee"}]},"line":19,"column":1,"endLine":19,"endColumn":0,"instructionPointerReference":"0x00007FF67163102B","moduleId":1000},{"id":1001,"name":"main.exe!doBar(Bar * bar) Line 22","source":{"name":"main.cpp","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"5916b8062e703c3220e18ca4d4c4e11e7ed826dc9fc4a89fb302ab90b270a1ee"}]},"line":22,"column":1,"endLine":22,"endColumn":0,"instructionPointerReference":"0x00007FF67163109B","moduleId":1000},{"id":1002,"name":"main.exe!main() Line 28","source":{"name":"main.cpp","path":"C:\\Users\\Kevin\\Documents\\Programming\\VSCodeWatchWindowTest\\main.cpp","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"5916b8062e703c3220e18ca4d4c4e11e7ed826dc9fc4a89fb302ab90b270a1ee"}]},"line":28,"column":1,"endLine":28,"endColumn":0,"instructionPointerReference":"0x00007FF671631110","moduleId":1000},{"id":1003,"name":"main.exe!invoke_main() Line 79","source":{"name":"exe_common.inl","path":"D:\\a\\_work\\1\\s\\src\\vctools\\crt\\vcstartup\\src\\startup\\exe_common.inl","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"06302037b260f066fed492d8bb29ef08d9906fd3afb9dd34a71b9c4c537a9dbc"}]},"line":79,"column":1,"endLine":79,"endColumn":0,"instructionPointerReference":"0x00007FF6716315C9","moduleId":1000},{"id":1004,"name":"main.exe!__scrt_common_main_seh() Line 288","source":{"name":"exe_common.inl","path":"D:\\a\\_work\\1\\s\\src\\vctools\\crt\\vcstartup\\src\\startup\\exe_common.inl","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"06302037b260f066fed492d8bb29ef08d9906fd3afb9dd34a71b9c4c537a9dbc"}]},"line":288,"column":1,"endLine":288,"endColumn":0,"instructionPointerReference":"0x00007FF6716314E2","moduleId":1000},{"id":1005,"name":"main.exe!__scrt_common_main() Line 331","source":{"name":"exe_common.inl","path":"D:\\a\\_work\\1\\s\\src\\vctools\\crt\\vcstartup\\src\\startup\\exe_common.inl","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"06302037b260f066fed492d8bb29ef08d9906fd3afb9dd34a71b9c4c537a9dbc"}]},"line":331,"column":1,"endLine":331,"endColumn":0,"instructionPointerReference":"0x00007FF67163139E","moduleId":1000},{"id":1006,"name":"main.exe!mainCRTStartup(void * __formal) Line 17","source":{"name":"exe_main.cpp","path":"D:\\a\\_work\\1\\s\\src\\vctools\\crt\\vcstartup\\src\\startup\\exe_main.cpp","sourceReference":0,"checksums":[{"algorithm":"SHA256","checksum":"f4f590f440ba7bf9472debd09278df41dbb87be3e4ee224be6fc2b2edb515f7b"}]},"line":17,"column":1,"endLine":17,"endColumn":0,"instructionPointerReference":"0x00007FF67163163E","moduleId":1000},{"id":1007,"name":"kernel32.dll!00007fff4dfd7374()","line":0,"column":0,"instructionPointerReference":"0x00007FFF4DFD7374","moduleId":1002},{"id":1008,"name":"ntdll.dll!00007fff4f73cc91()","line":0,"column":0,"instructionPointerReference":"0x00007FFF4F73CC91","moduleId":1001}],"totalFrames":9}}
-> (C) {"command":"threads","type":"request","seq":11}

<- (R) {"seq":81,"type":"response","request_seq":11,"success":true,"command":"threads","body":{"threads":[{"id":12696,"name":"Main Thread"},{"id":14600,"name":"ntdll.dll thread"},{"id":11936,"name":"ntdll.dll thread"},{"id":19060,"name":"ntdll.dll thread"}]}}
-> (C) {"command":"evaluate","arguments":{"expression":"result","frameId":1000,"context":"watch"},"type":"request","seq":12}
<- (E) {"seq":84,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/Evaluate","data":{"VS.Diagnostics.Debugger.vsdbg.Evaluation.IsError":true,"VS.Diagnostics.Debugger.vsdbg.Evaluation.Duration":15,"VS.Diagnostics.Debugger.vsdbg.OSFamily":"Windows","VS.Diagnostics.Debugger.vsdbg.Version":"17.13.20115.1 commit:2813ca575686dd74c298baf93407e693cefabef1","VS.Diagnostics.Debugger.vsdbg.WindowsVersion":"10.0.19045","VS.Diagnostics.Debugger.vsdbg.AdapterId":"cppvsdbg"}}}
<- (R) {"seq":86,"type":"response","request_seq":12,"success":true,"command":"evaluate","body":{"result":"identifier \"result\" is undefined","presentationHint":{"attributes":["readOnly","failedEvaluation"]},"variablesReference":0}}
-> (C) {"command":"scopes","arguments":{"frameId":1000},"type":"request","seq":13}
<- (R) {"seq":89,"type":"response","request_seq":13,"success":true,"command":"scopes","body":{"scopes":[{"name":"Locals","variablesReference":1000,"expensive":false},{"name":"Registers","presentationHint":"registers","variablesReference":1001,"expensive":true}]}}
-> (C) {"command":"variables","arguments":{"variablesReference":1000},"type":"request","seq":14}
<- (R) {"seq":92,"type":"response","request_seq":14,"success":true,"command":"variables","body":{"variables":[{"name":"pos","value":"{x=0.00000000 y=0.00000000 z=0.00000000 }","type":"vec3","presentationHint":{"kind":"data","attributes":["readOnly"]},"evaluateName":"pos","variablesReference":1002},{"name":"result","value":"An unspecified error has occurred.","presentationHint":{"attributes":["readOnly","failedEvaluation"]},"evaluateName":"result","variablesReference":0}]}}
Other Extensions

No response

Additional Information

No response

Lenguaje dominante
TypeScript
Estrellas
6.2k
Forks
1.7k
Merge medio
14 h 46 min
PR fusionados (30 d)
61

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/vscode-cpptools

Todos los issues de microsoft/vscode-cpptools

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.