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 de 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".
Respuestas:
En Snow Leopard y versiones posteriores de Mac OS, no es suficiente codificar el
gdb
ejecutable.Debe seguir esta guía para que funcione: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
La guía explica cómo hacerlo
lldb
, pero el proceso es exactamente el mismogdb
.fuente
sudo security add-trust
línea? ¿Puedo eliminar el.cer
archivo de mi escritorio ahora?codesign -s gdb_codesign `which gdb`
ayuda después de esta guíasudo codesign -s gdb_codesign `which gdb-apple`
en macOS sierra.¡Funciona cuando me cambio a
sudo gdb executableFileName
! :)fuente
gdb
como root? Solo tenía curiosidad porque es solo un depurador.rm -rf /
o algo similarmente destructivo en el que sobrescribe algunas configuraciones / binarios en los que se basa su computadora para arrancar y operar normalmente.Necesita crear un certificado y firmar gdb:
Finalmente puedes firmar gdb:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
fuente
El problema es que no ha iniciado sesión como usuario root (que no desea). Debe crear un certificado para que se permita el acceso a gdb. Sigue este tutorial y deberías estar listo para comenzar ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Si todo lo demás falla, solo use:
sudo gdb executableFileName
fuente
codesign -s gdb-cert $(which gdb)
para firmar lagdb
aplicación.Este enlace tenía el paso a paso más claro y detallado para que este error desapareciera.
En mi caso, tenía que tener la clave como clave del "Sistema"; de lo contrario, no funcionaba (lo cual no todas las URL mencionan).
También matar
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 usando
brew uninstall gdb
.fuente
brew
.Necesitaba este comando para que funcione en El Capitan:
fuente
Seguí este tutorial, y todo está bien.
fuente
En MacOSX, lldb debe estar firmado por código. Las compilaciones Debug and Release están configuradas para firmar con código utilizando un certificado de firma de código llamado lldb_codesign.
[Nota: - lldb se usa en mac como gdb.]
fuente
Aquí hay una guía realmente útil que resolvió mi problema (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
en terminal: esto solicita la contraseña de rootfuente
Estas instrucciones funcionan para OSX High Sierra y evitan ejecutar gdb como root (¡qué asco!). Recientemente actualicé de OSX 10.13.2 a 10.3.3. Creo que esto es cuando gdb 8.0.1 (instalado con homebrew) 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. Más o menos seguí estas instrucciones .
Limpia el desorden:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
->Keychain Access
, eliminé todos los certificados y claves gdb anteriores (¡asegúrese de saber lo que está haciendo aquí!). No está claro si esto es necesario, pero dado que me había equivocado tratando de crear esos certificados y claves usando otras instrucciones, los eliminé de todos modos. Tenía claves y certificados tanto en inicio de sesión como en sistema.Ahora reinstale gdb.
brew install gdb
Keychain Access
, ve al menúKeychain Access
->Certificate Assistant
->Create a Certificate
En la segunda página de información del certificado, dejé todos los campos en blanco, excepto los que ya se completaron.
En la página de información de par clave, dejé los valores predeterminados
En la página de extensión de restricciones básicas, no se marcó nada (predeterminado).
En la página de Extensión de nombre alternativo del sujeto, dejé la opción predeterminada marcada y no agregué nada más.
Hice clic en Crear y se me solicitó mi contraseña.
De vuelta en la
Keychain Access
aplicación, fuiSystem
y hice clic derecho engdb-cert
y en el menú desplegableTrust
, cambié todos los campos aAlways Trust
.Computadora reiniciada.
En la terminal, corrí
codesign -s gdb-cert /usr/local/bin/gdb
. Ingresé mi contraseña cuando se me solicitó.En la terminal, corrí
echo "set startup-with-shell off" >> ~/.gdbinit
Corrí
gdb myprogram
y luegostart
dentro de la consola gdb. Aquí, creo, me solicitó mi contraseña. Después de eso, en todas las ejecuciones posteriores, no solicitó mi contraseña.fuente
Este es un enfoque extraño, pero funcionó para mí (MacOs HighSierra 10.13.3). Instalar CLion. Viene con gdb. Una vez que ejecute el gdb usando Terminal. Copie el programa gdb a su usr / local / bin /. No hay problema de inicio de sesión, sudo, etc.
fuente
Siguiendo las instrucciones aquí, Codesign gdb en macOS parecía resolver este problema, para mí, en macOS High Sierra (10.13.3).
fuente