5 votes

Comment faire fonctionner lldb sur M1 Big Sur ?

Ceci sur un M1 mini, fonctionnant sous 11.1 avec un Xcode mis à jour. (Toutes les mises à jour en attente ont été appliquées.) Le SIP n'a pas été désactivé (s'il peut l'être sur le M1).

Nous avons un programme que nous utilisons pour tester une mmap() échec de notre application en cours de portage. Nous construisons le programme de test comme suit :

cc -v -arch arm64 -m64 -Wl,-no_adhoc_codesign -o mapfail mapfail.c

Ensuite, nous le signons. Il semble qu'il soit correctement signé :

@macarm[git:master]$ codesign -vvv mapfail
mapfail: valid on disk
mapfail: satisfies its Designated Requirement
@macarm[git:master]$ 

Nous avons activé le mode développeur sur le système. Nous avons également ajouté mon utilisateur au groupe _developer groupe. Mon utilisateur n'est pas un administrateur, mais j'ai essayé en tant que tel et j'ai obtenu la même chose.

Lorsque nous exécutons le programme, il obtient une erreur de segmentation (SIGSEGV), nous voulons donc le déboguer avec lldb mais c'est ce qui arrive :

@macarm[git:master]$ lldb mapfail
(lldb) target create "mapfail"
Current executable set to '/Users/layer/mapfail' (arm64).
(lldb) run
error: process exited with status -1 (attach failed ((os/kern) invalid argument))
(lldb) 

Les recherches à ce sujet n'ont donné aucune information, même sur les forums de développeurs d'Apple.

Plus d'informations. J'ai essayé un droit ajouté à codesign mais cela n'a pas fonctionné. Voici le droit que j'ai utilisé :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
         <key>com.apple.security.get-task-allow</key>
         <true/>
</dict>
</plist>

Quelqu'un voit-il un problème avec ce XML ?

1voto

Oskar Points 1242

Voici la réponse d'Apple sur les droits nécessaires pour attacher le logo de l'entreprise. llvm à un processus :

Le droit nécessaire sur MacOS est com.apple.security.get-task-allow et je sais comment l'ajouter dans Xcode, mais pas encore à partir du compilateur en ligne de commande. Vous pouvez vérifier la même chose sur votre Mac en utilisant l'application console pour afficher les journaux et reproduire l'erreur. Ensuite, recherchez debugserver dans la console et vous verrez que le débogueur démarre puis ne parvient pas à s'attacher.

Voici une erreur différente si vous essayez de démarrer Calculator.app dans le débogueur - il est durci et n'a pas les droits, donc il échoue comme votre application - ce n'est pas une question de notarisation ou de signature de code, mais de droits de débogage sur le binaire.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X