यदि कोई डिबगर रूट के रूप में चल रहा हो, तो आप केवल एक सेटिड या सेटगिड प्रोग्राम को डीबग कर सकते हैं। कर्नेल आपको ptrace
अतिरिक्त विशेषाधिकार के साथ चलने वाले प्रोग्राम पर कॉल नहीं करने देगा । यदि ऐसा होता है, तो आप प्रोग्राम को कुछ भी निष्पादित करने में सक्षम होंगे, जिसका प्रभावी रूप से मतलब होगा कि आप उदाहरण के लिए डिबगर को कॉल करके एक रूट शेल चला सकते हैं /bin/su
।
यदि आप Gdb को रूट के रूप में चलाते हैं, तो आप अपना प्रोग्राम चला सकेंगे, लेकिन रूट द्वारा चलाने पर आप केवल इसका व्यवहार देख पाएंगे।
यदि आपको प्रोग्राम को डिबग करने की आवश्यकता है जब वह रूट से शुरू नहीं होता है, तो प्रोग्राम को Gdb के बाहर शुरू करें, इसे परेशानी वाले हिस्से में पहुंचने से पहले कुछ फैशन में ठहराव दें, और attach
Gdb के अंदर की प्रक्रिया ( at 1234
जहां 1234 प्रक्रिया आईडी है)।