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

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.


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".


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.


-4

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

sudo qtcreator

Revela un gran agujero de seguridad.
enedil
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.