Fehler beim Debuggen in QtProject

14

Ich habe die neueste Version von QtProject installiert, damit ich jetzt C++Code debuggen kann.

Beim Versuch, zum ersten Mal zu debuggen, ist folgender Fehler aufgetreten:

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
user124009
quelle

Antworten:

14

In Ubuntu-Versionen nach 10.10 werden Sie in verwandten Anwendungen wie QtCreator darauf stoßen. Es ist ein Sicherheits - Feature von Ubuntu , die den Debugger Prozesse nicht von ihm Besitz befestigen verhindern.

Dies ist als Fehler # 3509 gegen QtCreator abgelegt . Gehen Sie folgendermaßen vor, um dieses Problem umzugehen:

  • vorübergehende Lösung (wird einen Neustart nicht überleben):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • In einer Datei /etc/sysctl.d/10-ptrace.conf(sollte bereits vorhanden sein ), ändern Sie den Wert kernel.yama.ptrace_scopeauf 0und dann laden Sie die Konfiguration: sudo sysctl -p.

Ich poste die temporäre Lösung ausdrücklich, da Sie diese Funktion aus Sicherheitsgründen wahrscheinlich nicht auf einem normalen Computer deaktivieren möchten.

gertvdijk
quelle
4

Ich hatte das gleiche Problem beim Ausführen des Projekts im Terminal. Deaktivieren Sie einfach das Kontrollkästchen "In Terminal ausführen" in "Projekte" (in der linken Leiste) - Registerkarte "Ausführen" - Abschnitt "Ausführen".

Angemessene_Annahme
quelle
Danke, das hat bei mir funktioniert. Das Debuggen beginnt jetzt in der QTCreators-Anwendungsausgabe.
Squareborg
Stimmen Sie ab, weil dies die einfachste Lösung ist, wenn Sie die Terminalausgabe Ihrer Anwendung nicht sehen müssen.
Rob Davies
0

Sie können die GDB-Funktionen mit ändern

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

Man Capabilities sagt, dass cap_sys_ptrace das Recht dazu gibt

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

Siehe auch man cap_from_text.

Dies ist eine Lösung, die nicht durch einen Neustart entfernt wird, aber auch nicht ganz sicher ist. Ich bin offen für Vorschläge, wie das dauerhaft und sicher geht.

Matti X Virtanen
quelle
-4

Öffnen Sie QtCreator einfach über ein Terminal mit Root-Berechtigungen. es hat bei mir funktioniert.

sudo qtcreator
Prashant Singh Rathore
quelle
Es zeigt große Sicherheitslücke.
27.