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_scope하는 방법에 대해 0다음의 구성을 다시 : sudo sysctl -p.

보안상의 이유로 일반 컴퓨터에서이 기능을 비활성화하지 않으려는 경우 임시 솔루션을 명시 적으로 게시하고 있습니다.


4

터미널에서 프로젝트를 실행하는 동안 동일한 문제가 발생했습니다. "프로젝트"(왼쪽 막대)- "실행"탭- "실행"섹션의 "터미널에서 실행"상자를 선택 취소하십시오 (또는 실행-검사-어떤 이유로 선택하지 않은 경우 선택 취소).


덕분에 QTCreators 응용 프로그램 출력에서 ​​디버깅이 시작되었습니다.
squareborg

애플리케이션에서 터미널 출력을 볼 필요가없는 경우 가장 쉬운 솔루션이기 때문에이 방법으로 투표하십시오.
Rob Davies

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

큰 보안 허점이 드러납니다.
enedil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.