Você pode depurar apenas um programa setuid ou setgid se o depurador estiver sendo executado como root. O kernel não permite que você acesse ptrace
um programa em execução com privilégios extras. Se isso acontecesse, você seria capaz de fazer o programa executar qualquer coisa, o que efetivamente significaria que você poderia, por exemplo, executar um shell raiz chamando um depurador /bin/su
.
Se você executar o Gdb como root, poderá executar o seu programa, mas só estará observando o comportamento dele quando executado pelo root.
Se você precisar depurar o programa quando ele não for iniciado pela raiz, inicie o programa fora do Gdb, faça uma pausa de alguma maneira antes de chegar à parte problemática e attach
ao processo dentro do Gdb ( at 1234
onde 1234 é o ID do processo).