Отладку программы setuid или setgid можно выполнять только в том случае, если отладчик работает от имени пользователя root. Ядро не позволит вам вызвать ptrace
программу с дополнительными привилегиями. Если это произойдет, вы сможете заставить программу выполнять что угодно, что фактически означает, что вы можете, например, запустить корневую оболочку, вызвав отладчик на/bin/su
.
Если вы запустите Gdb от имени пользователя root, вы сможете запустить свою программу, но вы будете наблюдать ее поведение только при запуске от имени пользователя root.
Если вам нужно отладить программу, когда она не запущена пользователем root, запустите программу за пределами Gdb, сделайте некоторую паузу перед тем, как перейти к проблемной части, и attach
процессу внутри Gdb ( at 1234
где 1234 - идентификатор процесса).