Meu aplicativo funciona bem, mas o gdb falha ao depurá-lo com o seguinte erro
(gdb) run
Starting program: /path/to/app
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).
Estou no OS X Lion. A versão do GDB é
$ 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".
Respostas:
No Snow Leopard e versões posteriores do Mac OS, não é suficiente assinar o código do
gdb
executável.Você deve seguir este guia para fazê-lo funcionar: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
O guia explica como fazer isso
lldb
, mas o processo é exatamente o mesmogdb
.fonte
sudo security add-trust
linha está fazendo? Posso excluir o.cer
arquivo da minha área de trabalho agora?codesign -s gdb_codesign `which gdb`
ajuda após este guiasudo codesign -s gdb_codesign `which gdb-apple`
no macOS sierra.Funciona quando mudo para
sudo gdb executableFileName
! :)fonte
gdb
como root? Eu só estava curioso porque é apenas um depurador.rm -rf /
ou algo destrutivo similar ao substituir alguns binários de configuração / binários nos quais seu computador confia para iniciar e operar normalmente.Você precisa criar um certificado e assinar o gdb:
Finalmente, você pode assinar o gdb:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
fonte
O problema é que você não está logado como usuário root (o que não deseja). Você precisa criar um certificado para o gdb ter acesso permitido. Siga este tutorial e você deve estar pronto para ir ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Se tudo mais falhar, basta usar:
sudo gdb executableFileName
fonte
codesign -s gdb-cert $(which gdb)
Para assinar ogdb
aplicativo.Esse link tinha o passo a passo mais claro e detalhado para fazer com que esse erro desaparecesse para mim.
No meu caso, eu tinha que ter a chave como uma chave "Sistema", caso contrário não funcionaria (o que nem todo URL menciona).
Também matar
taskgated
é uma alternativa viável (e mais rápida) para ter que reiniciar.Também desinstalei o MacPorts antes de iniciar esse processo e desinstalei o gdb atual usando
brew uninstall gdb
.fonte
brew
.Eu precisava desse comando para fazê-lo funcionar no El Capitan:
fonte
Eu segui este tutorial, e está tudo bem.
fonte
No MacOSX, o lldb precisa ser assinado por código. As versões Debug and Release são definidas para assinar código usando um certificado de assinatura de código chamado lldb_codesign.
[Nota: - lldb é usado no mac como gdb.]
fonte
Aqui está um guia realmente útil que resolveu meu problema (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
no terminal: solicita a senha rootfonte
Essas instruções funcionam no OSX High Sierra e evitam executar o gdb como root (eca!). Atualizei recentemente do OSX 10.13.2 para 10.3.3. Acho que foi quando o gdb 8.0.1 (instalado com homebrew) começou a falhar para mim.
Eu tive dificuldade com as instruções de outras pessoas. Depois de instruções diferentes, tudo estava uma bagunça. Então eu comecei um novo. Eu mais ou menos segui estas instruções .
Limpe a bagunça:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
->Keychain Access
, apaguei todos os certificados e chaves gdb anteriores (certifique-se de saber o que está fazendo aqui!). Não está claro se isso é necessário, mas desde que eu estraguei a tentativa de criar esses certificados e chaves usando outras instruções, eu os eliminei de qualquer maneira. Eu tinha chaves e certificados no login e no sistema.Agora reinstale o gdb.
brew install gdb
Keychain Access
, vá ao menuKeychain Access
->Certificate Assistant
->Create a Certificate
Na segunda página Informações do certificado, deixei todos os campos em branco, exceto os que já foram preenchidos.
Na página Informações do par de chaves, deixei os padrões
Na Página de Extensão de Restrições Básicas, nada foi verificado (padrão).
Na página Extensão de Nome Alternativo por Assunto, deixei o padrão marcado e não adicionei mais nada.
Cliquei em Criar e minha senha foi solicitada.
De volta ao
Keychain Access
aplicativo,System
cliquei com o botão direito do mousegdb-cert
e, no menu suspensoTrust
, alterei todos os campos paraAlways Trust
.Computador reiniciado.
No terminal, eu corri
codesign -s gdb-cert /usr/local/bin/gdb
. Digitei minha senha quando solicitado.No terminal, eu corri
echo "set startup-with-shell off" >> ~/.gdbinit
Eu corri
gdb myprogram
e depoisstart
no console gdb. Aqui, acredito, solicitou minha senha. Depois disso, todas as execuções subseqüentes não solicitaram minha senha.fonte
Essa é uma abordagem estranha, mas funcionou para mim (MacOs HighSierra 10.13.3). Instale o CLion. Ele vem com gdb. Uma vez execute o gdb usando o Terminal. Copie o programa gdb para o seu usr / local / bin /. Não há problema de login, sudo etc.
fonte
Seguindo as instruções aqui, a codificação do gdb no macOS pareceu resolver esse problema, para mim, no macOS High Sierra (10.13.3).
fonte