vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

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

Open CryptoCrocodile opened this issue 3 years ago • 4 comments

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" }

CryptoCrocodile avatar Sep 13 '22 10:09 CryptoCrocodile

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

"logging": {
   "engineLogging": true
}

WardenGnaw avatar Sep 13 '22 18:09 WardenGnaw

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

CryptoCrocodile avatar Sep 14 '22 09:09 CryptoCrocodile

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.

WardenGnaw avatar Sep 15 '22 23:09 WardenGnaw

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 avatar Sep 19 '22 09:09 CryptoCrocodile

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

CryptoCrocodile avatar Nov 11 '22 09:11 CryptoCrocodile