Ошибки GDB в macOS Mojave

Окружающая среда: Mac/Mojave и GDB 8.2.1 (с помощью homebrew).

Я работал через инструкции https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html т.е.

  • последний GDB через brew, который решает проблему с форматом исполняемого файла

  • подписать GDB с новыми правами

Кроме того, я также изменил SIP, чтобы разрешить отладку (в терминале OS Recovery: csrutil enable --without debug).

Тем не менее, я все еще не могу заставить GDB работать:

(gdb) file main
Reading symbols from main...done.
(gdb) run
Starting program: /Users/joubertold/code/Rhodus/obj/debug/main 
[New Thread 0x1a03 of process 5082]
[New Thread 0x2803 of process 5082]
During startup program terminated with signal ?, Unknown signal.
(gdb) 

Интересно, что lldb работает для меня в том же двоичном файле:

(lldb) file main
Current executable set to 'main' (x86_64).
(lldb) run
Process 5086 launched: '/Users/joubertold/code/Rhodus/obj/debug/main' (x86_64)
Rhodus
 1 is ONE
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is beyond
 1 is beyond
 1 is beyond
Process 5086 exited with status = 0 (0x00000000) 
(lldb) 

Какие-нибудь мысли?

1 ответ

Решение

Я получил GDB работает над Мохаве по:

а) получение последней версии исходного архива GDB (на момент написания ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-8.2.50.20190212.tar.xz) - помимо прочего, добавлена ​​обработка для распознавания исполняемых файлов на Mac.

б) построить GDB. Я получил ошибки для теневого копирования переменных в darwin-nat.c, поэтому я отредактировал файл и перестроил (diff https://gist.github.com/joubertnel/267ca0fff4eaad494cc19ec3ba7953ed).

c) следуйте инструкциям в https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html

Вуаля.

К сожалению, принятый ответ мне не подходит.

Для всех, кто находится в такой же ситуации, что и я, я предлагаю вместо этого использовать Visual Studio Code или Xcode для отладки вашей программы C.

Другие вопросы по тегам