macos gdb

macos - gdb falla con el error "No se puede encontrar el puerto de la tarea Mach para el identificador del proceso"



(11)

¡Funciona cuando cambio a sudo gdb executableFileName ! :)

Mi aplicación funciona bien pero gdb no puede depurarla con el siguiente error

(gdb) run Starting program: /path/to/app Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).

Estoy en OS X Lion. La versión GDB es

$ gdb --version GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-apple-darwin".


El problema es que no ha iniciado sesión como usuario raíz (que no desea). Debe crear un certificado para que gdb tenga acceso permitido. Sigue este tutorial y deberías ser bueno para ir ...

http://sourceware.org/gdb/wiki/BuildingOnDarwin

Si todo lo demás falla, simplemente use: sudo gdb executableFileName


En MacOSX lldb necesita ser código firmado. Las compilaciones Debug and Release se configuran con el signo de código mediante un certificado de firma de código denominado lldb_codesign.

If you don''t have one yet you will need to: - Launch /Applications/Utilities/Keychain Access.app - In Keychain Access select the "login" keychain in the "Keychains" list in the upper left hand corner of the window. - Select the following menu item: Keychain Access->Certificate Assistant->Create a Certificate... - Set the following settings Name = lldb_codesign Identity Type = Self Signed Root Certificate Type = Code Signing - Click Continue - Click Continue - Click Done - Click on the "My Certificates" - Double click on your new lldb_codesign certificate - Turn down the "Trust" disclosure triangle Change: When using this certificate: Always Trust - Enter your login password to confirm and make it trusted The next steps are necessary on SnowLeopard, but are probably because of a bug how Keychain Access makes certificates. - Option-drag the new lldb_codesign certificate from the login keychain to the System keychain in the Keychains pane of the main Keychain Access window to make a copy of this certificate in the System keychain. You''ll have to authorize a few more times, set it to be "Always trusted" when asked. - Switch to the System keychain, and drag the copy of lldb_codesign you just made there onto the desktop. - Switch to Terminal, and run the following: sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer - Right click on the "lldb_codesign" certificate in the "System" keychain (NOT "login", but the one in "System"), and select "Delete" to delete it from the "System" keychain. - Reboot - Clean and rebuild lldb and you should be able to debug. That should do it.

[Nota: - lldb se usa en mac como gdb.]



Estas instrucciones funcionan para OSX High Sierra y evitan ejecutar gdb como root (yuck!). Recientemente actualicé desde OSX 10.13.2 a 10.3.3. Creo que esto es cuando gdb 8.0.1 (w / homebrew instalado) comenzó a fallar para mí.

Tuve dificultades con las instrucciones de otras personas. Después de diferentes instrucciones, todo fue un desastre. Entonces comencé un nuevo. Yo más o menos seguí estas sourceware.org/gdb/wiki/BuildingOnDarwin .

Limpia el desastre:

  1. brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
  2. En Applications -> Utilities -> Keychain Access , eliminé todos los certificados y claves anteriores de gdb (¡asegúrese de saber qué está haciendo aquí!). No está claro si esto es necesario, pero como me había molestado tratando de crear esos certificados y claves usando otras instrucciones, los eliminé de todos modos. Tenía claves y certificados tanto en el inicio de sesión como en el sistema.

Ahora reinstala gdb.

  1. brew install gdb
  2. Dentro del Keychain Access , vaya al menú Keychain Access -> Certificate Assistant -> Create a Certificate
  3. Marque "Permitirme anular los valores predeterminados" y configure

Name : gdb-cert Identity Type: Self Signed Root Certificate Type : Code Signing [X] Let me override defaults

  1. En la 1ª página de información del certificado:

Serial Number : 1 Validity Period (days): 3650

  1. En la segunda página de información del certificado, dejé todos los campos en blanco, excepto los que ya estaban completados.

  2. En la página de información de par de claves, dejé los valores predeterminados

Key Size : 2048 Algorithm : RSA

  1. En la página de extensión de uso de la clave, dejé los valores predeterminados marcados.

[X] Include Key Usage Extension [X] This extension is critical Capabilities: [X] Signature

  1. En la página Extensión de uso de clave extendida, dejé los valores predeterminados marcados.

[X] Include Extended Key Usage Extension [X] This extension is critical Capabilities: [X] Code Signing

  1. En la página de extensión de restricciones básicas, no se verificó nada (predeterminado).

  2. En la página de Extensión de nombre alternativo del sujeto, dejé el valor predeterminado marcado y no agregué nada más.

[X] Include Subject Alternate Name Extension

  1. En Especifique una ubicación para la página del certificado, configuro

Keychain: System

  1. Hice clic en Crear y se me solicitó mi contraseña.

  2. De vuelta en la aplicación Keychain Access , fui a System y hice clic derecho en gdb-cert y en el menú desplegable Trust , cambié todos los campos a Always Trust .

  3. Computadora reiniciada

  4. En la Terminal, ejecuté codesign -s gdb-cert /usr/local/bin/gdb . Ingresé mi contraseña cuando se me solicitó.

  5. En la Terminal, ejecuté echo "set startup-with-shell off" >> ~/.gdbinit

  6. gdb myprogram y luego gdb myprogram dentro de la consola de gdb. Aquí, creo, me pidió mi contraseña. Después de eso, en todas las ejecuciones posteriores, no solicitó mi contraseña.


Este es un enfoque extraño, pero funcionó para mí (MacOs HighSierra 10.13.3). Instala CLion. Viene con gdb. Una vez ejecutado el gdb usando Terminal. Copie el programa gdb a su usr / local / bin /. No hay problema de iniciar sesión, sudo, etc.


Necesita crear un certificado y firmar gdb:

  • Abrir la aplicación "Acceso a Llaveros" (/ Aplicaciones / Utilidades / Acceso a Llaves.app)
  • Abrir menú / Acceso a llavero / Asistente de certificado / Crear un certificado ...
  • Elija un nombre (gdb-cert en el ejemplo), establezca "Tipo de identidad" en "Raíz autofirmada", establezca "Tipo de certificado" en "Firma de código" y seleccione "Permitir anular los valores predeterminados". Haga clic en "Continuar". Es posible que desee extender el período predefinido de 365 días a 3650 días.
  • Haga clic varias veces en "Continuar" hasta llegar a la pantalla "Especificar una ubicación para el certificado", luego configure "Llavero en el sistema".
  • Si no puede almacenar el certificado en el llavero "Sistema", créelo en el llavero de "inicio de sesión" y luego expórtelo. A continuación, puede importarlo en el llavero "Sistema".
  • En los llaveros, seleccione "Sistema", y debería encontrar su nuevo certificado. Use el menú contextual para el certificado, seleccione "Obtener información", abra el elemento "Confianza" y configure "Firma de código" en "Confiar siempre".
  • Debe salir de la aplicación "Acceso a Llaveros" para usar el certificado y reiniciar el servicio "taskgated" eliminando el proceso actual "taskgated" en ejecución. Alternativamente puede reiniciar su computadora.
  • Finalmente puedes firmar gdb:

    sudo codesign -s gdb-cert /usr/local/bin/ggdb

    sudo ggdb ./myprog


Necesitaba este comando para hacerlo funcionar en El Capitán:

sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer


Seguí this tutorial, y todo está bien.


Siguiendo las instrucciones aquí, Codesign gdb en macOS pareció resolver este problema, para mí, en macOS High Sierra (10.13.3).


Este enlace tuvo el paso más claro y detallado para hacer desaparecer este error.

En mi caso, tuve que tener la clave como clave "Sistema", de lo contrario no funcionó (lo que no todas las URL mencionan).

También matar a taskgated es una alternativa viable (y más rápida) a tener que reiniciar.

También desinstalé MacPorts antes de comenzar este proceso y desinstalé el gdb actual utilizando brew uninstall gdb .