Ошибки 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.