Recibiendo error al intentar depurar en QtProject

14

Instalé la última versión de QtProject para poder depurar el C++código.

Al intentar depurar por primera vez, recibí este error:

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
usuario124009
fuente

Respuestas:

14

En las versiones de Ubuntu posteriores a 10.10, se encontrará con esto en aplicaciones más relacionadas, como QtCreator. Es una característica de seguridad de Ubuntu que impide que el depurador se conecte a procesos que no le pertenecen.

Esto se archiva como un error # 3509 contra QtCreator . Para solucionar este problema, haga esto:

  • solución temporal (no sobrevivirá a un reinicio):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • En un archivo /etc/sysctl.d/10-ptrace.conf(ya debe existir), cambiar el valor de kernel.yama.ptrace_scopea 0y vuelva a cargar la configuración: sudo sysctl -p.

Estoy publicando explícitamente la solución temporal, ya que probablemente no desee mantener esta función deshabilitada en una máquina normal por razones de seguridad.

gertvdijk
fuente
4

Tuve el mismo problema al ejecutar el proyecto en la terminal. Simplemente desmarque (o marque - ejecute - desmarque si por alguna razón está desmarcado) la casilla "Ejecutar en terminal" en "Proyectos" (en la barra izquierda) - pestaña "Ejecutar" - sección "Ejecutar".

suposición razonable
fuente
Gracias, esto funcionó para mí, la depuración ahora comienza en la salida de la aplicación QTCreators.
squareborg
Votar este porque es la solución más fácil si no necesita ver la salida del terminal desde su aplicación.
Rob Davies
0

Puede cambiar las capacidades de gdb con

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

capacidades hombre le dice a cap_sys_ptrace da derecho a

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

Ver también man cap_from_text.

Esta es una solución que no se elimina al reiniciar, pero tampoco es completamente segura. Estoy abierto a sugerencias sobre cómo hacer esto de forma permanente y segura.

Matti X Virtanen
fuente
-4

Simplemente abra QtCreator a través de una Terminal con permisos de root; Funcionó para mí.

sudo qtcreator
Prashant Singh Rathore
fuente
Revela un gran agujero de seguridad.
enedil