microsoft / microsoft/vscode-cpptools

Symbols are not found on the symbol server

Open
#12,776 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

debugger help wanted
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment
  • OS and version: Windows Server 2022 Datacenter 21H2
  • VS Code: 1.93
  • C/C++ extension: 1.21.6
  • OS and version of remote machine (if applicable): N/A
  • GDB / LLDB version: N/A
Bug Summary and Steps to Reproduce

Bug Summary:
Symbols from the symbol server are not discovered

Steps to reproduce:

  1. Have a symbol server available (\\servername\directory)
  2. Create a dump file from a process who's symbols are available on the server
  3. Clear the symbol cache completely (or remove from configuration)
  4. Debug the dump file with vs code (debugger icon)
  5. See that no symbols are loaded for this process
Debugger Configurations
`
        {
            "name": "Open Dump File (Windows)",
            "type": "cppvsdbg",
            "request": "launch",
            "dumpPath": "C:/Temp/process.DMP",
            "program": "unused field in case of opening dumps, that is required in the json",
            "args": [],
            "cwd": "${workspaceFolder}",
            "environment": [],
            "requireExactSource": false,
            "symbolOptions": {
                "searchPaths": [
                    "file://servername/directory"
                ],
                "searchMicrosoftSymbolServer": true,
                "cachePath": "E:/Cache",
            },
            "console": "internalConsole",
            "logging": {
                "exceptions": true,
                "programOutput": true,
                "moduleLoad": true,
                "engineLogging": true,
                "trace": true,
                "traceResponse": true
            }
        },


### Debugger Logs

```shell
`
<- (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":"***"}}
<- (E) {"seq":8,"type":"event","event":"initialized","body":{}}
-> (C) {"command":"setFunctionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":3}
<- (R) {"seq":11,"type":"response","request_seq":3,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
-> (C) {"command":"setInstructionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":4}
<- (R) {"seq":14,"type":"response","request_seq":4,"success":true,"command":"setInstructionBreakpoints","body":{"breakpoints":[]}}
-> (C) {"command":"setExceptionBreakpoints","arguments":{"filters":[],"filterOptions":[{"filterId":"all"}]},"type":"request","seq":5}
<- (R) {"seq":17,"type":"response","request_seq":5,"success":true,"command":"setExceptionBreakpoints","body":{"breakpoints":[{"verified":true}]}}
-> (C) {"command":"configurationDone","type":"request","seq":6}
<- (E) {"seq":20,"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.12.10729.1 commit:f369b458d0e8e43fcaae9d514696aba8466573c7","VS.Diagnostics.Debugger.vsdbg.WindowsVersion":"10.0.20348","VS.Diagnostics.Debugger.vsdbg.TargetArchitecture":"AMD64"}}}
<- (E) {"seq":22,"type":"event","event":"process","body":{"name":"C:\\Temp\\process.DMP","startMethod":"launch","pointerSize":64}}
<- (R) {"seq":24,"type":"response","request_seq":6,"success":true,"command":"configurationDone"}
<- (E) {"seq":26,"type":"event","event":"progressStart","body":{"progressId":"1","title":"Loading...","cancellable":true,"message":"Loading symbols for process.exe from: file://servername/directory","percentage":0}}
<- (E) {"seq":28,"type":"event","event":"progressUpdate","body":{"progressId":"1","message":"Loading symbols for process.exe from: Microsoft Symbol Servers","percentage":0}}
-> (C) {"command":"threads","type":"request","seq":7}
<- (R) {"seq":31,"type":"response","request_seq":7,"success":true,"command":"threads","body":{"threads":[]}}
<- (E) {"seq":33,"type":"event","event":"output","body":{"category":"console","output":"Loaded 'E:\\process.exe'. \n"}}
Loaded 'E:\process.exe'.
<- (E) {"seq":35,"type":"event","event":"module","body":{"reason":"new","module":{"id":1000,"name":"process.exe","path":"E:\\process.exe","isUserCode":true,"version":"99.99.0.0","symbolStatus":"Cannot find or open the PDB file."}}}


### Other Extensions

_No response_

### Additional Information

I've already tried with many variations, like `//servername/directory`, `\\\\servername\\directory`, `file://///servername/directory`, `S:/directory` (mapped in the file system).

If I open the same dump file with visual studio, it nicely loads the symbols from the exact same location and stores it in `E:/Cache`, after which opening the dump file in VS Code again, it does have all the symbols as it loads them from `E:/Cache`

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the dump-file workflow using the shown launch configuration, symbolOptions.searchPaths, and the debugger logs. Compare UNC and mapped-drive paths with the Visual Studio behavior; done means symbols load from the configured symbol server and are stored in E:/Cache when the cache is empty.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.