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.