How to get lldb to work on M1 Big Sur?

Solution 1:

Here's the relevant answer from Apple on the entitlements needed to attach the llvm debugger to a process:

  • https://developer.apple.com/forums/thread/132797

The entitlement needed on macOS is com.apple.security.get-task-allow and I know how to add that in Xcode, but not yet from the command line compiler. You can verify the same on your Mac using console app to show the logs and then reproduce the error. Then search for debugserver in console and you will see the debugger starting and then failing to attach.

Here's a different error if you try to start Calculator.app in the debugger - it's hardened and doesn't have the entitlement so that fails just like your app - it's not about notarization or code signing, but about the debugging entitlement on the binary.

default 19:30:23.088087-0600    debugserver debugserver will use os_log for internal logging.
default 19:30:23.088429-0600    debugserver debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-1200.0.44
 for arm64.
default 19:30:23.088489-0600    debugserver Got a connection, waiting for process information for launching or attaching.
error   19:30:23.090348-0600    debugserver error: MachTask::TaskPortForProcessID task_for_pid failed: ::task_for_pid ( target_tport = 0x0103, pid = 17889, &task ) => err = 0x00000005 ((os/kern) failure)
default 19:30:23.090378-0600    debugserver 1 +0.000000 sec [45e2/0303]: error: ::task_for_pid ( target_tport = 0x0103, pid = 17889, &task ) => err = 0x00000005 ((os/kern) failure) err = ::task_for_pid ( target_tport = 0x0103, pid = 17889, &task ) => err = 0x00000005 ((os/kern) failure) (0x00000005
default 19:30:23.090329-0600    kernel  macOSTaskPolicy: (com.apple.debugserver) may not get the taskport of (Calculator) (pid: 17889): (Calculator) is hardened, (Calculator) doesn't have get-task-allow, (com.apple.debugserver) is a declared debugger