A depuração de um programa que tenha privilégios efetivamente fornece ao depurador os mesmos privilégios. Portanto, independentemente de quaisquer configurações de segurança, a depuração de um programa que tenha privilégios extras deve exigir que o depurador tenha pelo menos todos esses privilégios. Por exemplo, um programa setuid tem os privilégios do usuário original e do usuário de destino, portanto, o depurador precisa ter os privilégios de ambos os usuários. Na prática, isso significa que o depurador deve ser raiz. No Linux, é suficiente dar ao depurador o recurso CAP_SYS_PTRACE
(isso não reduz os privilégios efetivos do depurador, mas significa que o depurador não irá, por exemplo, sobrescrever acidentalmente arquivos de outro usuário).
Geralmente, é mais conveniente depurar o programa durante a execução sem privilégios extras. Ajustar permissões de arquivos, caminhos e assim por diante de acordo. Se você precisar depurar o programa em condições reais com os privilégios, o depurador precisará ser executado como root. No Linux, isso pode ser root em um namespace de usuário que contém os dois usuários envolvidos.