Réception d'une erreur lors de la tentative de débogage dans QtProject


14

J'ai installé la dernière version de QtProject et je peux maintenant déboguer du C++code.

En essayant de déboguer pour la première fois, j'ai eu cette erreur:

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

Réponses:


14

Sur les versions d'Ubuntu après 10.10, vous rencontrerez cela dans des applications plus connexes, telles que QtCreator. C'est une fonctionnalité de sécurité d'Ubuntu qui empêche le débogueur de se connecter à des processus qui ne lui appartiennent pas.

Ceci est classé comme bogue # 3509 contre QtCreator . Pour contourner ce problème, procédez comme suit:

  • solution temporaire (ne survivra pas à un redémarrage):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • Dans un fichier /etc/sysctl.d/10-ptrace.conf(devrait déjà exister), modifier la valeur kernel.yama.ptrace_scopede 0puis recharger la configuration: sudo sysctl -p.

Je publie explicitement la solution temporaire, car vous ne voulez probablement pas garder cette fonctionnalité désactivée sur une machine standard pour des raisons de sécurité.


4

J'ai eu le même problème lors de l'exécution du projet dans le terminal. Décochez (ou cochez - exécuter - décochez si elle est décochée pour une raison quelconque) la case "Exécuter dans le terminal" dans "Projets" (dans la barre de gauche) - onglet "Exécuter" - section "Exécuter".


Merci, cela a fonctionné pour moi, le débogage commence maintenant dans la sortie de l'application QTCreators.
squareborg

Voter celui-ci parce que c'est la solution la plus simple si vous n'avez pas besoin de voir la sortie du terminal de votre application.
Rob Davies

0

Vous pouvez modifier les capacités de gdb avec

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

les capacités de l'homme indiquent que cap_sys_ptrace donne droit à

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

Voir aussi man cap_from_text.

Il s'agit d'une solution qui n'est pas supprimée lors du redémarrage, mais elle n'est pas non plus complètement sûre. Je suis ouvert aux suggestions sur la façon de le faire de manière permanente et en toute sécurité.


-4

Il suffit d'ouvrir QtCreator via un terminal avec des autorisations root; ça a marché pour moi.

sudo qtcreator

Il révèle un gros trou de sécurité.
enedil
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.