QtProjectでデバッグを試行中にエラーを受信


14

QtProjectの最新バージョンをインストールしたのでC++コードをデバッグできます。

初めてデバッグしようとしたときに、このエラーが発生しました:

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

回答:


14

10.10以降のUbuntuバージョンでは、QtCreatorなどのより関連するアプリケーションでこれに遭遇します。これはUbuntuのセキュリティ機能であり、デバッガーが所有していないプロセスにアタッチすることを防ぎます。

これはQtCreatorに対するバグ#3509として提出されています。この問題を回避するには、次を実行します。

  • 一時的な解決策(再起動後も存続しません):

     echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    
  • ファイル/etc/sysctl.d/10-ptrace.conf(既に存在するはず)で、値をkernel.yama.ptrace_scopetoに変更してから0、構成を再ロードしますsudo sysctl -p

セキュリティ上の理由から通常のマシンではこの機能を無効にしたくないので、一時的な解決策を明示的に投稿しています。


4

ターミナルでプロジェクトを実行しているときに同じ問題が発生しました。[プロジェクト](左側のバー)の[ターミナルで実行]ボックス-[実行]タブ-[実行]セクションのチェックを外す(またはチェック-実行-何らかの理由でチェックを外す)を解除します。


これでうまくいったおかげで、QTCreatorsアプリケーションの出力でデバッグが開始されます。
squareborg 14年

アプリケーションからのターミナル出力を表示する必要がない場合、これが最も簡単な解決策であるため、これを投票します。
ロブ・デイヴィス

0

以下を使用してgdb機能を変更できます。

sudo setcap cap_sys_ptrace=eip /usr/bin/gdb

man機能は、cap_sys_ptraceが以下を与えることを指示します

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

man cap_from_textも参照してください。

これは、再起動では削除されないソリューションですが、完全に安全でもありません。これを永続的かつ安全に行う方法を提案します。


-4

ルート権限を持つターミナルを介してQtCreatorを開くだけです。それは私のために働いた。

sudo qtcreator

大きなセキュリティホールが明らかになります。
-eneil
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.