I maintain a Python library that's written in C++ (using Pybind11). For the past couple of years, I've been able to debug it just fine with lldb
, just by compiling the extension in debug mode (i.e.: disabling optimization and including symbols, with -g
).
However, as of lldb-1300.0.42.3
on macOS Ventura 13.1 (22C65), lldb
is completely unable to find the symbols and reports every stack frame as being from dyld:
(lldb) bt
* thread #2, stop reason = signal SIGSTOP
frame #0: 0x0000000187110a00
frame #1: 0x00000001003700fc dyld
frame #2: 0x00000001003e2614 dyld
frame #3: 0x00000001003dfbac dyld
frame #4: 0x00000001003e3188 dyld
frame #5: 0x000000010033df20 dyld
frame #6: 0x000000010033d754 dyld
frame #7: 0x00000001003dfe28 dyld
frame #8: 0x00000001003e3188 dyld
frame #9: 0x000000010033df20 dyld
* frame #10: 0x000000010033d754 dyld
frame #11: 0x00000001003dfe28 dyld
frame #12: 0x00000001003e3188 dyld
frame #13: 0x000000010033df20 dyld
frame #14: 0x00000001003e2614 dyld
...
I've tried:
dlopen
(which does not get hit)image list
to show the loaded binary images (which does not include my Python extension)As pointed out by Jim Ingham, lldb
version 13 predates macOS Ventura, and doesn't have the changes required to support debugging with symbols on Ventura. Upgrading to lldb
14+ (via Xcode) fixes the issue.