macos gdb

gdb no funciona en macos High Sierra 10.13.3



(3)

Esto es causado por la última versión de gdb 8.1, la degradación de gdb a 8.0.1 podría resolver este problema.

Cómo degradar a gdb 8.0.1

  • Desvincular gdb actual: brew unlink gdb
  • Instale gdb 8.0.1: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
  • Opcional: evite actualizar gdb con brew pin gdb

He instalado gdb 8.1 con brew.

También tengo codeign gdb y .gdbinit como se muestra a continuación:

set startup-with-shell off .

He desactivado la función SIP:

$ csrutil status System Integrity Protection status: disabled.

Pero gdb todavía no funciona:

#include <iostream> using namespace std; int main() { cout << "hello world!" << endl; return 0; }

Compilar comando:

g++ -g test.cpp

salida de gdb:

GNU gdb (GDB) 8.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-apple-darwin17.3.0". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from a.out...Reading symbols from /Users/mypc/Downloads/a.out.dSYM/Contents/Resources/DWARF/a.out...done. done. (gdb) run Starting program: /Users/mypc/Downloads/a.out [New Thread 0x2503 of process 802] [New Thread 0x2303 of process 802] During startup program terminated with signal ?, Unknown signal. (gdb)

¿Qué pasos correctos para hacer que gdb funcione en macos sierra?


Estoy usando macOS 10.13.6 y estaba teniendo el mismo problema que "(por favor verifique que gdb esté codificado - vea taskgated (8))" ...

Cuando bajé el GDB de 8.2.1 a 8.0.1 y luego creé y firmé el gdb-cert nuevamente y simplemente funcionó.

No olvide cambiar la ruta de gdb de 8.2.1 a 8.0.1 en el depurador de eclipse, reinicie y funcionará.


en mi caso, la degradación a 8.0.1 no ayudó.
pero los siguientes pasos ayudaron.

(inserté el paso 12, "compruebe si funciona" porque, en lugar de reiniciar, probé gdb y funcionó bien. No seguí los pasos 12+)

  1. Acceso a llavero abierto
  2. En el menú, abra Acceso a llaveros> Asistente de certificados> Crear un certificado
  3. Déle un nombre (por ejemplo, gdb-cert )
    • Tipo de identidad: raíz autofirmada
    • Tipo de certificado: firma de código
    • Comprobar: déjame anular los valores predeterminados
  4. Continúe hasta que "especifique una ubicación para ..."
  5. Establecer la ubicación del llavero en Sistema
  6. Cree un certificado y cierre el Asistente de certificados.
  7. Encuentra el certificado en el llavero del sistema.
  8. Haga doble clic en el certificado.
  9. Expanda Confianza, configure la firma de Código para confiar siempre
  10. Reiniciar taskgated en terminal: killall taskgated
  11. Codesign gdb usando su certificado: codesign -fs gdb-cert /usr/local/bin/gdb
  12. --- COMPRUEBE SI FUNCIONA ---
  13. Apague su Mac y reinicie en modo de recuperación (mantenga presionado el command-R hasta que aparezca el logotipo de Apple)
  14. Abrir ventana de terminal
  15. Modifique la Protección de integridad del sistema para permitir la depuración: csrutil enable --without debug
  16. Reinicia tu Mac
  17. La depuración con gdb ahora debería funcionar como se esperaba.

Fuente de información:
pre Sierra: https://gist.github.com/hlissner/898b7dfc0a3b63824a70e15cd0180154
Sierra: https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d