Ricezione dell'errore durante il tentativo di debug in QtProject


14

Ho installato l'ultima versione di QtProject, quindi ora posso eseguire il debug del C++codice.

Durante il tentativo di debug per la prima volta ho ricevuto questo errore:

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

Risposte:


14

Nelle versioni di Ubuntu successive alla 10.10 ti imbatterai in altre applicazioni correlate, come QtCreator. È una funzionalità di sicurezza di Ubuntu che impedisce al debugger di collegarsi a processi non di sua proprietà.

Questo è archiviato come bug # 3509 contro QtCreator . Per aggirare questo problema, attenersi alla seguente procedura:

  • soluzione temporanea (non sopravviverà al riavvio):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • In un file /etc/sysctl.d/10-ptrace.conf(dovrebbe già esistere), modificare il valore di kernel.yama.ptrace_scopea 0e quindi ricaricare la configurazione: sudo sysctl -p.

Sto pubblicando in modo esplicito la soluzione temporanea, poiché probabilmente non si desidera mantenere questa funzione disabilitata su una macchina normale per motivi di sicurezza.


4

Ho avuto lo stesso problema durante l'esecuzione del progetto nel terminale. Deseleziona (o seleziona - esegui - deseleziona se per qualche motivo non è selezionata) la casella "Esegui nel terminale" in "Progetti" (sulla barra di sinistra) - Scheda "Esegui" - sezione "Esegui".


Grazie a questo ha funzionato per me il debug ora inizia nell'output dell'applicazione QTCreators.
Squareborg,

Votare questo perché è la soluzione più semplice se non è necessario visualizzare l'output del terminale dall'applicazione.
Rob Davies,

0

Puoi cambiare le funzionalità di gdb con

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

man features dice a cap_sys_ptrace che dà diritto a

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

Vedi anche man cap_from_text.

Questa è una soluzione che non viene rimossa dal riavvio, ma non è nemmeno completamente sicura. Sono aperto a suggerimenti su come farlo in modo permanente e sicuro.


-4

Basta aprire QtCreator tramite un Terminale con permessi di root; ha funzionato per me.

sudo qtcreator

Rivela un grande buco nella sicurezza.
enedil,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.