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