문제

내 프로그램에서는 소켓을 만들고 http 포트 (80)를 듣기 위해 바인딩해야합니다. 이 프로그램은 Sudo와 함께 명령 줄에서 시작하여 권한을 루트로 확대 할 때 제대로 작동합니다. Xcode에서 실행하면 바인딩 함수에 대한 호출에 '권한 거부'오류가 나타납니다 (asio :: ip :: tcp :: acceptor :: bind ()).

Xcode에서 디버깅을하려면 어떻게해야합니까?

Xcode 3.1.2가있는 Mac OS X 10.5의 C ++ 및 Boost.asio에서 모두 수행됩니다.

도움이 되었습니까?

해결책

업데이트: Xcode 4.5 이상은 참조하십시오 이 답변 대신에.


내가 요구하는 일을 알고있는 유일한 방법은 Xcode를 루트로 실행하는 것입니다.

>> sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode

루트로 실행되면 Xcode에서 시작된 프로세스도 루트로 실행됩니다. 그러나 파일을 작성하거나 편집하면 루트가 소유 할 것이므로 chown 먼저 일반 사용자로 편집하기 전에.

Xcode가 "루트로서 시작 프로세스"라고 말하는 방법을 좋아하지만, 내가 아는 한, 그러한 기능은 사용할 수 없습니다.

명령 줄 디버거 내에서 응용 프로그램을 실행할 수도 있습니다. gdb 응용 프로그램 디버그. 운영

>> sudo gdb /path/to/my/application

그런 다음 Xcode를 열어두고 마음대로 수정하고 GDB 내에서 프로그램을 디버깅 할 수 있습니다. 이것이 제가 일반적으로하는 일입니다.

편집하다: 미래의 독자 : Alexander Stavonin의 답변을 참조하십시오. 이 작업을 수행하는 방법에 대해 이야기합니다. SSH 키가 괜찮고 시스템에서 루트 사용자를 활성화하면 그의 대답이 갈 길입니다.

다른 팁

Xcode 4.5에서 제품->체계 편집: 봐 정보 아래 탭 디버그 프로세스로 그리고 선택하십시오 뿌리 옵션.

Xcode는 디버깅 응용 프로그램을 루트로 실행할 수 있습니다. 이 목적을 위해 다음 단계를 수행해야합니다.

  1. 로컬 컴퓨터의 루트 사용자를 활성화하십시오.

    ㅏ. "디렉토리 유틸리티"실행 (/System/Library/Coreservices/Directory Utility.App)

    비. 편집 메뉴에서 "루트 사용자 활성화"를 선택하고 루트 비밀번호를 입력하십시오.

  2. 원격 로징을 활성화합니다.

    ㅏ. 시스템 환경 설정에서 …-> 공유, 원격 로그인을 확인하십시오. 이 옵션은 SSH 악마를 켭니다.

  3. 루트 사용자를 위해 .ssh/alustized_keys 폴더에서 ssh public/private keys를 만들고 공개 키를 복사하십시오.

    ㅏ. 로컬 머신에서 터미널을 열고 타이핑하십시오 ssh-keygen -t rsa

    비. 기본 위치를 수락하고 루트의 비밀번호를 입력하십시오.

    씨. 루트로 로그인하십시오 su - ~/.ssh 디렉토리를 작성하십시오. (~ == /var /root)

    디. 공개 키를 루트에 복사하십시오. cat ~/.ssh/id_rsa.pub | ssh root@localhost "cat - >> ~/.ssh/authorized_keys"

    이자형. 모든 것이 정상인지 확인하십시오. 유형 ssh root@localhost. 루트 비밀번호를 요구해서는 안됩니다.

  4. Xcode에서 SSH를 통해 원격 디버깅을 활성화하십시오.

    ㅏ. «실행 파일»의 드롭 다운 메뉴에서«정보 받기»를 선택하십시오.

    비. "디버깅"설정에서«ssh를 통해 원격으로 실행 가능한 디버그 실행 가능»root@localhost를«Connect»Info로 넣습니다.

  5. 이제 모든 것이 괜찮을 것입니다. now

블로그에서

Xcode는 더 이상 원격 디버깅 렌더링을 지원하지 않습니다. 이러한 답변의 대부분은 더 이상 사용되지 않습니다.

프로그램을 루트로 디버깅하는 것은 이제 쉽습니다. 제품 메뉴에서 "편집 체계…"를 사용하고 "실행"구성표 "Info"Pane에서 "Debug Process를 루트"로 선택하십시오. 한 번 인증해야합니다.

Xcode 4.5 기준으로 Xcode가 상당히 다시 시작될 때까지 이상한 오류가 발생했습니다.

SSH를 통해 루트로 디버그.

활성 실행 가능 -> 디버깅 -> 디버그 실행 가능 SSH를 통해 원격 실행 가능.

포트 443에서 실행되는 웹 서버를 디버깅하려면 대신 일반 계정의 포트 8443에서 실행 한 다음 : sudo ssh user@localhost -l 443 : localhost : 8443 -n을 수행 할 수 있습니다.

그런 다음 오른쪽 포트에서 응용 프로그램에 연락 할 수 있지만 응용 프로그램을 일반 사용자로 실행할 수 있다는 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top