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
10.10以降のUbuntuバージョンでは、QtCreatorなどのより関連するアプリケーションでこれに遭遇します。 Ubuntuのセキュリティfeatureは、デバッガーが彼が所有していないプロセスにアタッチすることを防ぎます。
これは QtCreatorに対するバグ#3509 としてファイルされています。この問題を回避するには、次を実行します。
一時的な解決策(再起動後も存続しません):
echo 0 | Sudo tee /proc/sys/kernel/yama/ptrace_scope
ファイル/etc/sysctl.d/10-ptrace.conf
(既に存在するはずです)で、kernel.yama.ptrace_scope
の値を0
に変更してから、構成を再ロードします:Sudo sysctl -p
。
セキュリティ上の理由から、通常のマシンではこの機能を無効にしたくないので、一時的な解決策を明示的に投稿しています。
ターミナルでプロジェクトを実行しているときに同じ問題が発生しました。 [プロジェクト](左側のバー)-[実行]タブ-[実行]セクションの[ターミナルで実行]ボックスのチェックを外す(またはチェック-実行-何らかの理由でチェックを外す).
以下を使用して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も参照してください。
これは、再起動では削除されないソリューションですが、完全に安全でもありません。これを永続的かつ安全に行う方法を提案します。