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