В Mac OS Catalina вся текущая документация не работает из-за невозможности найти порт задачи Mach для идентификатора процесса, какие-либо советы?

Исходная форма вопроса (не совсем вопрос как таковой): Невозможно найти порт задачи Mach для идентификатора процесса: (os / kern) failure (0x5). (пожалуйста, убедитесь, что gdb имеет кодовую подпись - см. taskgated (8))

Я бы хотел, чтобы кто-нибудь упомянул любую имеющуюся у них информацию о возможности запускать gdb без sudo, желательно, но просто запустить было бы нормально.

Я выполнил инструкции на странице https://github.com/cs01/gdbgui/issues/55 и почти все связанные потоки stackoverflow и OSXdaily, которые я могу найти примерно за неделю. Я знаю, что существует довольно много документации об этой ошибке, но пока никто не опубликовал эти результаты и не использует Catalina. Я запускаю gdb 8.3 на Mac OSX Catalina 10.15.1, настроенный как "x86_64-apple-darwin19.0.0"

Я создал сертификаты в Системе, а затем в Логине, без каких-либо изменений в результате.

У меня set startup-with-shell off как в gdb, так и в файле .gdbinit в моем домашнем каталоге.

В конце концов я смог запустить gdb с sudo gdb ./a.out только для получения нечетных сообщений, когда я запускаю код с r внутри gdb:

  1. (No debugging symbols found in ./a.out)
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xc03 of process 906]
    [New Thread 0xf03 of process 906]
    During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.```
    
  2. (No debugging symbols found in ./a.out)
    (gdb) b main
    Breakpoint 1 at 0x100000f64
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xd03 of process 768]
    [New Thread 0x1003 of process 768]
    During startup program terminated with signal ?, Unknown signal.```
    
  3. Reading symbols from /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out.dSYM/Contents/Resources/DWARF/a.out...
    (gdb) b main
    Breakpoint 1 at 0x100001753: file SSSv1-1.c, line 99.
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xb03 of process 717]```
    
  4. Reading symbols from /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out.dSYM/Contents/Resources/DWARF/a.out...
    (gdb) b main
    Breakpoint 1 at 0x100001753: file SSSv1-1.c, line 99.
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    Unable to find Mach task port for process-id 680: (os/kern) failure (0x5).
    (please check gdb is codesigned - see taskgated(8))```
    

person z.karl    schedule 26.11.2019    source источник
comment
Пока вы ждете ответа, вы можете использовать либо lldb, либо gdb на виртуальной машине Linux, Vagrant очень пригодится для этого.   -  person NegativeChameleon    schedule 26.11.2019
comment
@NegativeChameleon Спасибо, я пока посмотрю на них.   -  person z.karl    schedule 26.11.2019


Ответы (2)


На моем MacBook Pro (15 дюймов, 2016 г.) работает Catalina 10.15.2 (19C57) с включенным sip.

Я установил gdb 8.3.1:

brew install gdb

Затем в своей домашней папке я создал файл gdb.xml с содержимым:

<?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.cs.debugger</key>
    <true/>
</dict>
</plist>

Я создал gdb-cert в системной связке ключей

Чтобы подписать gdb, я включил учетную запись root и, будучи root, я использовал команду:

codeign --entitlements gdb.xml -fs gdb-cert /usr/local/Cellar/gdb/8.3.1/bin/gdb

Теперь я могу использовать netbeans для отладки моих кодов fortran.

person Marco Parente    schedule 17.01.2020
comment
@SecretAgentMan, не могли бы вы рассказать, что он делает? Я не думаю, что у Марко Паренте есть опыт для комментариев. - person z.karl; 19.01.2020
comment
Я могу подтвердить, что это решение не сработало для меня, хотя, возможно, есть другие настройки, о которых вы не упомянули? Что было за этим ответом? - person z.karl; 19.01.2020
comment
@ z.karl Автор сообщения (@MarcoParente) всегда может отредактировать ответ, чтобы дать дополнительные разъяснения. - person SecretAgentMan; 20.01.2020
comment
Это сработало для меня. Macbook Air 2017, Catalina 10.15.5 - person Saarthak Gupta; 24.06.2020

Право xml было для меня недостающим элементом:

  1. Запуск / Приложения / Утилиты / Связка ключей Access.app
  2. Доступ к связке ключей-> Помощник по сертификации-> Создать сертификат
    Name = gdb_codesign
    Identity Type = Self Signed Root
    Certificate Type = Code Signing
    
  3. Щелкните «Мои сертификаты».
  4. Дважды щелкните свой новый сертификат gdb_codesign
  5. Отключите треугольник раскрытия «Доверие». Изменение: при использовании этого сертификата: всегда доверяйте
  6. Удерживая нажатой клавишу Option, перетащите новый сертификат gdb_codesign из цепочки ключей входа в цепочку ключей системы.
  7. Создайте кодовое обозначение права xml: gdb-entity.xml
    <?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.cs.debugger</key>
        <true/>
    </dict>
    </plist>
    
  8. Открыть терминал
    $ codesign --entitlements gdb-entitlement.xml -fs gdb_codesign $(which gdb)
    $ sudo killall taskgated
    
person arcanereinz    schedule 26.05.2020