microsoft / vscode-cpptools

Official repository for the Microsoft C/C++ extension for VS Code.
Other
5.52k stars 1.55k forks source link

Debugging: clang/lldb/macOS - no symbols for app but symbols loaded in lldb #9875

Open CryptoCrocodile opened 2 years ago

CryptoCrocodile commented 2 years ago

Discussed in https://github.com/microsoft/vscode-cpptools/discussions/9867

Originally posted by **thisisagenericusernameforagenericperson** September 9, 2022 Hello, I'm trying to use vscode to build and debug an app that uses QT. I get symbol information for QT classes, but not for my own classes. The data in the "variables" panel only shows memory addresses. However, doing a `-exec image lookup -vn MyClassName` shows that there are two locations found where the symbol has been found. Curiously, it's the same location twice. Also, the callstack shows proper symbol names as well. In any case, this indicates that the symbol is available to the lldb debugger, but not in vscode. Would love to hear about any suggestions. Thanks! The following is my launch configuration. > { "configurations": [ { "name": "C/C++: Run with Debugger", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${config:buildDirectory}/debug/${config:appName}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}/${config:buildDirectory}/debug", "environment": [], "externalConsole": false, "MIMode": "lldb", "symbolLoadInfo": { "loadAll": true, "exceptionList": "", }, "preLaunchTask": "Build (Debug)", "setupCommands": [ { "text": "settings set target.process.thread.step-avoid-regexp \"\"", "description": "Enable stepping into STL" } ], "logging": { "engineLogging": false, "trace": false, "traceResponse": false } } ], "version": "2.0.0" }
WardenGnaw commented 2 years ago

Can you add the following to your launch.json and share the output in the Debug Console?

"logging": {
   "engineLogging": true
}
CryptoCrocodile commented 2 years ago

Sure, I'd love to do that. Unfortunately, I would have to clean the output and strip all user and project specific data from the log. It will be much easier, if you can point me to a specific section of the log output you'd like to review.

What's interesting here is that from looking at the log; vscode requests type info and gets it sucessfully, yet the locals are not populated properly: 1: (48993) <-1056-stack-list-variables 0 --thread 1 --frame 0 1: (48994) ->1056^done,variables=[{arg="1",name="this"},{arg="1",name="previousVersionSettings"},{arg="1",name="parent"},{name="sdkInitializationError"}] 1: (48994) ->(gdb) 1: (48994) 1056: elapsed time 1 1: (48998) <-1057-var-create - - "this" --thread 1 --frame 0 1: (48998) ->1057^done,name="var0",numchild="97",value="0x00000001229f7a00",type="XXMainWindow *",thread-id="1",has_more="0" 1: (48998) ->(gdb) 1: (48999) 1057: elapsed time 1 1: (49000) <-1058-var-create - - "previousVersionSettings" --thread 1 --frame 0 1: (49000) ->1058^done,name="var1",numchild="1",value="0x0000000000000000",type="QSettings *",thread-id="1",has_more="0" 1: (49000) ->(gdb) 1: (49000) 1058: elapsed time 0 1: (49000) <-1059-var-create - - "parent" --thread 1 --frame 0 1: (49000) ->1059^done,name="var2",numchild="3",value="0x0000000000000000",type="QWidget *",thread-id="1",has_more="0" 1: (49000) ->(gdb) 1: (49000) 1059: elapsed time 0 1: (49000) <-1060-var-create - - "sdkInitializationError" --thread 1 --frame 0 1: (49005) ->1060^done,name="var3",numchild="2",value="{...}",type="const Optional<QString>",thread-id="1",has_more="0" 1: (49005) ->(gdb)

Here is an image from the locals:

image

I presume that the typename would be suffixed to the row - if available, or displayed instead of the memory location, as seen here:

image
WardenGnaw commented 2 years ago

The best section would be to set a breakpoint on the line before you see this issue. Clear the Debug Console, Hit this breakpoint and share the contents of that window so we can see what the engine is doing.

CryptoCrocodile commented 2 years ago

Thanks. Attached is the log, once again, the stack info seems correct in the output, but incorrect in the UI:

image

1: (14981) <--exec-continue 1: (14982) ->^running 1: (14987) ->(gdb) 1: (14987) ->*running,thread-id="all" 1: (14987) ->(gdb) 1: (14992) ->=thread-exited,id="1",group-id="i1" 1: (14992) ->=thread-exited,id="2",group-id="i1" 1: (14992) ->=thread-exited,id="3",group-id="i1" 1: (14992) ->=thread-exited,id="4",group-id="i1" 1: (14992) ->=thread-exited,id="5",group-id="i1" 1: (14992) Send Event AD7ThreadDestroyEvent 1: (14992) ->=thread-exited,id="6",group-id="i1" 1: (14992) ->(gdb) 1: (14992) ->=library-loaded,id="/usr/lib/libobjc-trampolines.dylib",target-name="/usr/lib/libobjc-trampolines.dylib",host-name="/usr/lib/libobjc-trampolines.dylib",symbols-loaded="0",loaded_addr="0x0000000115268000",size="49152" 1: (14992) Send Event AD7ThreadDestroyEvent 1: (14992) Send Event AD7ThreadDestroyEvent 1: (14992) Send Event AD7ThreadDestroyEvent 1: (14992) Send Event AD7ThreadDestroyEvent 1: (14993) Send Event AD7ThreadDestroyEvent 1: (14993) Send Event AD7ModuleLoadEvent Loaded '/usr/lib/libobjc-trampolines.dylib'. Symbols loaded. 1: (15008) ->(gdb) 1: (15008) ->=library-loaded,id="/System/Library/PrivateFrameworks/login.framework/Versions/A/login",target-name="/System/Library/PrivateFrameworks/login.framework/Versions/A/login",host-name="/System/Library/PrivateFrameworks/login.framework/Versions/A/login",symbols-loaded="0",loaded_addr="0x00000001b351b000",size="126976" 1: (15008) Send Event AD7ModuleLoadEvent Loaded '/System/Library/PrivateFrameworks/login.framework/Versions/A/login'. Symbols loaded. 1: (15092) ->(gdb) 1: (15092) ->=library-loaded,id="/System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge",target-name="/System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge",host-name="/System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge",symbols-loaded="0",loaded_addr="0x00000001aeab8000",size="1032192" 1: (15092) Send Event AD7ModuleLoadEvent Loaded '/System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge'. Symbols loaded. 1: (15122) ->=thread-created,id="1",group-id="i1" 1: (15122) ->=thread-created,id="3",group-id="i1" 1: (15122) ->=thread-created,id="6",group-id="i1" 1: (15122) ->=thread-created,id="7",group-id="i1" 1: (15122) ->=thread-created,id="8",group-id="i1" 1: (15122) <-1038-thread-info 1 1: (15122) ->=thread-created,id="9",group-id="i1" 1: (15122) ->(gdb) 1: (15122) <-1039-thread-info 3 1: (15122) <-1040-thread-info 6 1: (15122) <-1041-thread-info 7 1: (15122) <-1042-thread-info 8 1: (15122) <-1043-thread-info 9 1: (15122) ->*stopped,reason="breakpoint-hit",disp="del",bkptno="3",frame={level="0",addr="0x000000010057cda8",func="AcmeNative_main(int, char**)",args=[{name="argc",value="1"},{name="argv",value="0x000000016fdff6a8"}],file="main.cpp",fullname="/Users/acme/Documents/Repositories/AcmeNative/Source/main.cpp",line="221"},thread-id="1",stopped-threads="all" 1: (15122) ->(gdb) 1: (15122) <-1044-thread-info 1: (15123) ->1038^done,threads=[{id="1",target-id="Thread 1",frame={level="0",addr="0x000000010057cda8",func="AcmeNative_main(int, char**)",args=[{name="argc",value="1"},{name="argv",value="0x000000016fdff6a8"}],file="main.cpp",fullname="/Users/acme/Documents/Repositories/AcmeNative/Source/main.cpp",line="221"},frame={level="1",addr="0x000000010057d200",func="main",args=[{name="argc",value="1"},{name="argv",value="0x000000016fdff6a8"}],file="main.cpp",fullname="/Users/acme/Documents/Repositories/AcmeNative/Source/main.cpp",line="292"},frame={level="2",addr="0x00000001124c508c",func="start",args=[],file="??",fullname="??",line="-1"},state="stopped"}] 1: (15123) ->(gdb) 1: (15123) ->1039^done,threads=[{id="3",target-id="Thread 3",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"}] 1: (15123) ->(gdb) 1: (15123) 1038: elapsed time 0 1: (15123) ->1040^done,threads=[{id="6",target-id="Thread 6",frame={level="0",addr="0x00000001a767a8b0",func="mach_msg_trap",args=[],file="??",fullname="??",line="-1"},frame={level="1",addr="0x00000001a767ad20",func="mach_msg",args=[],file="??",fullname="??",line="-1"},frame={level="2",addr="0x0000000208e3588c",func="glcDebugListener",args=[],file="??",fullname="??",line="-1"},frame={level="3",addr="0x00000001a76b826c",func="_pthread_start",args=[],file="??",fullname="??",line="-1"},state="running"}] 1: (15123) Send Event AD7ProcessInfoUpdatedEvent 1: (15123) ->(gdb) 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) ->1041^done,threads=[{id="7",target-id="Thread 7",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"}] 1: (15123) ->(gdb) 1: (15123) 1039: elapsed time 1 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) ->1042^done,threads=[{id="8",target-id="Thread 8",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"}] 1: (15123) 1040: elapsed time 1 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) ->(gdb) 1: (15123) 1041: elapsed time 1 1: (15123) ->1043^done,threads=[{id="9",target-id="Thread 9",frame={level="0",addr="0x00000001a767a8b0",func="mach_msg_trap",args=[],file="??",fullname="??",line="-1"},frame={level="1",addr="0x00000001a767ad20",func="mach_msg",args=[],file="??",fullname="??",line="-1"},frame={level="2",addr="0x00000001a77852c0",func="__CFRunLoopServiceMachPort",args=[],file="??",fullname="??",line="-1"},frame={level="3",addr="0x00000001a7783770",func="__CFRunLoopRun",args=[],file="??",fullname="??",line="-1"},frame={level="4",addr="0x00000001a7782b34",func="CFRunLoopRunSpecific",args=[],file="??",fullname="??",line="-1"},frame={level="5",addr="0x00000001aa457100",func="_NSEventThread",args=[],file="??",fullname="??",line="-1"},frame={level="6",addr="0x00000001a76b826c",func="_pthread_start",args=[],file="??",fullname="??",line="-1"},state="running"}] 1: (15123) ->(gdb) 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) 1042: elapsed time 1 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) 1043: elapsed time 1 1: (15123) Send Event AD7ThreadCreateEvent 1: (15123) ->1044^done,threads=[{id="1",target-id="Thread 1",frame={level="0",addr="0x000000010057cda8",func="AcmeNative_main(int, char**)",args=[{name="argc",value="1"},{name="argv",value="0x000000016fdff6a8"}],file="main.cpp",fullname="/Users/acme/Documents/Repositories/AcmeNative/Source/main.cpp",line="221"},frame={level="1",addr="0x000000010057d200",func="main",args=[{name="argc",value="1"},{name="argv",value="0x000000016fdff6a8"}],file="main.cpp",fullname="/Users/acme/Documents/Repositories/AcmeNative/Source/main.cpp",line="292"},frame={level="2",addr="0x00000001124c508c",func="start",args=[],file="??",fullname="??",line="-1"},state="stopped"},{id="3",target-id="Thread 3",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"},{id="6",target-id="Thread 6",frame={level="0",addr="0x00000001a767a8b0",func="mach_msg_trap",args=[],file="??",fullname="??",line="-1"},frame={level="1",addr="0x00000001a767ad20",func="mach_msg",args=[],file="??",fullname="??",line="-1"},frame={level="2",addr="0x0000000208e3588c",func="glcDebugListener",args=[],file="??",fullname="??",line="-1"},frame={level="3",addr="0x00000001a76b826c",func="_pthread_start",args=[],file="??",fullname="??",line="-1"},state="running"},{id="7",target-id="Thread 7",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"},{id="8",target-id="Thread 8",frame={level="0",addr="0x00000001a767c72c",func="__workq_kernreturn",args=[],file="??",fullname="??",line="-1"},state="running"},{id="9",target-id="Thread 9",frame={level="0",addr="0x00000001a767a8b0",func="mach_msg_trap",args=[],file="??",fullname="??",line="-1"},frame={level="1",addr="0x00000001a767ad20",func="mach_msg",args=[],file="??",fullname="??",line="-1"},frame={level="2",addr="0x00000001a77852c0",func="__CFRunLoopServiceMachPort",args=[],file="??",fullname="??",line="-1"},frame={level="3",addr="0x00000001a7783770",func="__CFRunLoopRun",args=[],file="??",fullname="??",line="-1"},frame={level="4",addr="0x00000001a7782b34",func="CFRunLoopRunSpecific",args=[],file="??",fullname="??",line="-1"},frame={level="5",addr="0x00000001aa457100",func="_NSEventThread",args=[],file="??",fullname="??",line="-1"},frame={level="6",addr="0x00000001a76b826c",func="_pthread_start",args=[],file="??",fullname="??",line="-1"},state="running"}],current-thread-id="1" 1: (15123) ->(gdb) 1: (15124) 1044: elapsed time 1 1: (15124) <-1045-var-delete var0 1: (15124) ->1045^done 1: (15124) ->(gdb) 1: (15125) 1045: elapsed time 0 1: (15125) <-1046-var-delete var1 1: (15125) ->1046^done 1: (15125) ->(gdb) 1: (15125) 1046: elapsed time 0 1: (15125) <-1047-var-delete var2 1: (15125) ->1047^done 1: (15125) ->(gdb) 1: (15125) 1047: elapsed time 0 1: (15125) <-1048-var-delete var3 1: (15125) ->1048^done 1: (15125) ->(gdb) 1: (15125) 1048: elapsed time 0 1: (15125) <-1049-var-delete var4 1: (15126) ->1049^done 1: (15126) ->(gdb) 1: (15126) 1049: elapsed time 0 1: (15126) <-1050-var-delete var5 1: (15126) ->1050^done 1: (15126) ->(gdb) 1: (15126) 1050: elapsed time 0 1: (15126) <-1051-var-delete var6 1: (15126) ->1051^done 1: (15126) ->(gdb) 1: (15126) 1051: elapsed time 0 1: (15126) <-1052-var-delete var7 1: (15126) ->1052^done 1: (15126) ->(gdb) 1: (15126) 1052: elapsed time 0 1: (15126) <-1053-var-delete var8 1: (15126) ->1053^done 1: (15126) ->(gdb) 1: (15126) 1053: elapsed time 0 1: (15126) <-1054-var-delete var9 1: (15127) ->1054^done 1: (15127) ->(gdb) 1: (15127) 1054: elapsed time 0 1: (15127) <-1055-var-delete var10 1: (15127) ->1055^done 1: (15127) ->(gdb) 1: (15127) 1055: elapsed time 0 1: (15127) <-1056-var-delete var11 1: (15127) ->1056^done 1: (15127) ->(gdb) 1: (15127) 1056: elapsed time 0 1: (15127) Send Event AD7BreakpointEvent 1: (15549) <-1057-stack-list-variables 0 --thread 1 --frame 0 1: (15550) ->1057^done,variables=[{arg="1",name="argc"},{arg="1",name="argv"},{name="application"},{name="previousSettings"},{name="qtTranslator"},{name="mainTranslator"},{name="applicationLocker"},{name="splash"},{name="applicationReturnValue"},{name="applicationFilePath"},{name="arguments"},{name="applicationDirPath"}] 1: (15550) ->(gdb) 1: (15550) 1057: elapsed time 0 1: (15550) <-1058-var-create - - "argc" --thread 1 --frame 0 1: (15550) ->1058^done,name="var12",numchild="0",value="1",type="int",thread-id="1",has_more="0" 1: (15550) ->(gdb) 1: (15550) 1058: elapsed time 0 1: (15550) <-1059-var-create - - "argv" --thread 1 --frame 0 1: (15550) ->1059^done,name="var13",numchild="1",value="0x000000016fdff6a8",type="char **",thread-id="1",has_more="0" 1: (15550) ->(gdb) 1: (15550) 1059: elapsed time 0 1: (15550) <-1060-var-create - - "application" --thread 1 --frame 0 1: (15551) ->1060^done,name="var14",numchild="1",value="0x0000000115012c80",type="Acme::IMApplication *",thread-id="1",has_more="0" 1: (15551) ->(gdb) 1: (15551) 1060: elapsed time 0 1: (15551) <-1061-var-create - - "previousSettings" --thread 1 --frame 0 1: (15551) ->1061^done,name="var15",numchild="1",value="0x0000000000000000",type="QSettings *",thread-id="1",has_more="0" 1: (15551) ->(gdb) 1: (15551) 1061: elapsed time 0 1: (15551) <-1062-var-create - - "qtTranslator" --thread 1 --frame 0 1: (15551) ->1062^done,name="var16",numchild="1",value="0x0000000114582ac0",type="QTranslator *",thread-id="1",has_more="0" 1: (15551) ->(gdb) 1: (15551) 1062: elapsed time 0 1: (15551) <-1063-var-create - - "mainTranslator" --thread 1 --frame 0 1: (15551) ->1063^done,name="var17",numchild="1",value="0x00000001145a9720",type="QTranslator *",thread-id="1",has_more="0" 1: (15551) ->(gdb) 1: (15551) 1063: elapsed time 0 1: (15551) <-1064-var-create - - "applicationLocker" --thread 1 --frame 0 1: (15553) ->1064^done,name="var18",numchild="5",value="{...}",type="const Acme::System::ApplicationInstanceLocker",thread-id="1",has_more="0" 1: (15553) ->(gdb) 1: (15553) 1064: elapsed time 1 1: (15553) <-1065-var-create - - "splash" --thread 1 --frame 0 1: (15553) ->1065^done,name="var19",numchild="4",value="0x00000001145b54d0",type="IMSplashScreen *",thread-id="1",has_more="0" 1: (15553) ->(gdb) 1: (15553) 1065: elapsed time 0 1: (15553) <-1066-var-create - - "applicationReturnValue" --thread 1 --frame 0 1: (15553) ->1066^done,name="var20",numchild="0",value="1876948136",type="const int",thread-id="1",has_more="0" 1: (15553) ->(gdb) 1: (15553) 1066: elapsed time 0 1: (15553) <-1067-var-create - - "applicationFilePath" --thread 1 --frame 0 1: (15554) ->1067^done,name="var21",numchild="1",value="{...}",type="const QString",thread-id="1",has_more="0" 1: (15554) ->(gdb) 1: (15554) 1067: elapsed time 0 1: (15554) <-1068-var-create - - "arguments" --thread 1 --frame 0 1: (15554) ->1068^done,name="var22",numchild="1",value="{...}",type="const QStringList",thread-id="1",has_more="0" 1: (15554) ->(gdb) 1: (15554) 1068: elapsed time 0 1: (15554) <-1069-var-create - - "applicationDirPath" --thread 1 --frame 0 1: (15554) ->1069^done,name="var23",numchild="1",value="{...}",type="const QString",thread-id="1",has_more="0" 1: (15554) ->(gdb) 1: (15554) 1069: elapsed time 0

CryptoCrocodile commented 1 year ago

Are there any news on this? Just tried it again and unfortunately still get the same issue with the latest toolchain.