QtProject में डीबग करने का प्रयास करते समय त्रुटि प्राप्त करना


14

मैंने QtProject का नवीनतम संस्करण स्थापित किया है ताकि अब मैं C++कोड डीबग कर सकूं

पहली बार डिबग करने की कोशिश करते समय मुझे यह त्रुटि मिली:

ptrace: Operation not permitted.

Could not attach to the process. Make sure no other debugger traces this process.
Check the settings of
/proc/sys/kernel/yama/ptrace_scope
For more details, see /etc/sysctl.d/10-ptrace.conf

जवाबों:


14

10.10 के बाद के उबंटू संस्करणों पर आप इसे और भी संबंधित अनुप्रयोगों में चलाएंगे, जैसे कि QtCreator। यह उबंटू की एक सुरक्षा विशेषता है जो डिबगर को उसके स्वामित्व वाली प्रक्रियाओं से जुड़ने से रोकती है।

यह QtCreator के खिलाफ बग # 3509 के रूप में दायर किया गया है । इस समस्या को हल करने के लिए, यह करें:

  • अस्थायी समाधान (रिबूट नहीं बचेगा):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • एक फ़ाइल में /etc/sysctl.d/10-ptrace.conf(पहले से मौजूद हो), का मूल्य बदल kernel.yama.ptrace_scopeकरने के लिए 0और फिर विन्यास को फिर से लोड: sudo sysctl -p

मैं स्पष्ट रूप से अस्थायी समाधान पोस्ट कर रहा हूं, क्योंकि आप संभवतः सुरक्षा कारणों से इस सुविधा को एक नियमित मशीन पर अक्षम नहीं रखना चाहते हैं।


4

टर्मिनल में प्रोजेक्ट चलाते समय भी मुझे यही समस्या थी। बस अनचेक (या चेक - रन - अनचेक करें यदि यह किसी कारण से अनियंत्रित है) "प्रोजेक्ट्स" में बॉक्स "रन इन टर्मिनल" (बाएं पट्टी पर) - "रन" टैब - "रन" अनुभाग।


धन्यवाद यह मेरे लिए डिबगिंग का काम करता है अब QTCreators एप्लिकेशन आउटपुट में शुरू होता है।
स्क्वायरबर्ग

यदि आप अपने आवेदन से टर्मिनल आउटपुट को देखने की जरूरत नहीं है, तो इसे एक वोट दें क्योंकि यह सबसे आसान समाधान है।
रोब डेविस

0

आप gdb क्षमताओं को बदल सकते हैं

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

आदमी क्षमताओं cap_sys_ptrace बताता है कि सही है

Trace  arbitrary  processes  using ptrace(2); apply get_robust_list(2)
to arbitrary processes; inspect processes using kcmp(2).

मैन भी देखें cap_from_text।

यह एक ऐसा समाधान है जिसे रिबूट द्वारा हटाया नहीं जाता है, लेकिन यह पूरी तरह से सुरक्षित भी नहीं है। मैं सुझाव के लिए खुला हूं कि यह कैसे स्थायी रूप से और सुरक्षित रूप से करना है।


-4

रूट अनुमतियों के साथ एक टर्मिनल के माध्यम से बस QtCreator खोलें; यह मेरे लिए काम किया।

sudo qtcreator

यह बड़े सुरक्षा छेद का खुलासा करता है।
enedil
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.