2020년 macOS에 Gdb Mac Setup Gdb 설치

7343 단어 debugmacoscppgdb

Mavericks(macOS 10.9)부터 Xcode는 gdb 디버거 지원을 중지합니다.다음은 당신이 이 그리 간단하지 않은 문제를 해결하도록 인도하는 절차입니다.

카탈로그

  • Install gdb
  • Generate a certificate
  • Sign certificate for gdb
  • Create a gdb command file
  • Generating builds
  • gdb 설치


    터미널 응용 프로그램을 엽니다. 응용 프로그램 > 유틸리티 > 터미널.이 안내서는 항상 터미널을 사용하므로 모든 단계를 완료하기 전에 터미널을 열어 두는 것이 좋습니다.
    만약 당신의 시스템에 gdb가 없다면, 당신은 그것을 설치해야 합니다.gdb를 설치하는 방법Homebrew을 보여 드리겠습니다.
    우선 시스템에 gdb가 설치되어 있는지 확인하십시오.터미널에 다음을 입력합니다.
    gdb --version
    
    시스템에 gdb가 있으면 Generate a certificate 단계로 이동할 수 있습니다.오류가 발생하면 자체 제작 소프트웨어로 gdb를 설치해야 합니다.
    다음을 입력하여 자체 제작 소프트웨어가 있는지 확인합니다.
    brew --version
    
    시스템에 Homebrew가 설치되어 있지 않으면 설치해야 합니다.Terminal을 사용하여 다음 명령을 입력하거나 복사하여 붙여넣습니다.
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
    일단 자체 제작 소프트웨어를 설치하면 gdb를 설치할 수 있다.본고를 작성할 때까지 gdb의 현재 버전은 9.2이고 2020년 9월까지 Catalina에서 실행되는 것을 확인했습니다.
    gdb를 설치하려면 다음 명령을 입력합니다.
    brew install gdb
    
    다음 명령을 실행하여 gdb가 제대로 설치되었는지 확인할 수 있습니다.
    gdb --version
    
    만약 모든 것이 순조롭다면, 너는 다음 단계에 들어갈 준비가 되어 있다.

    인증서 생성


    만약 그것이 gdb를 설치하는 것처럼 간단하다면, 나는 이 안내서를 하지 않을 것이다.파일을 디버깅하려고 시도하면 오류와 의외의 행동을 얻을 수 있습니다. 다윈 코어에서 gdb가 특별한 권한이 없는 상황에서 다른 프로세스를 제어할 수 없기 때문입니다.다행히도 이 안내서의 나머지 부분은 Mac에서 gdb를 효과적으로 사용하는 데 필요한 모든 절차를 안내합니다.
    gdb에 필요한 권한을 주기 위해서는 자체 서명 인증서를 만들어야 합니다.
    다음 단계는 다음과 같습니다.
  • 열쇠고리 액세스 응용 프로그램 시작: 응용 프로그램 > 유틸리티 > 열쇠고리 액세스.
  • 왼쪽 열쇠고리 목록에서 시스템 항목을 마우스 오른쪽 버튼으로 클릭하고 열쇠고리 "System"잠금 해제를 선택합니다.
  • 도구 모음에서 Keychain Access>Certificate Assistant>Create a Certificate로 이동합니다.
  • 이름 (예: gdb 인증서) 을 선택하십시오.
  • 식별 유형을 자체 서명 루트로 설정합니다.
  • 인증서 유형을 코드 서명으로 설정합니다.
  • 기본값을 덮어쓰도록 확인란을 선택합니다.
  • 인증서 위치 지정 대화 상자가 나타날 때까지 설치 프로세스를 계속할 수 있습니다.여기서 Keychain을 System으로 설정해야 합니다.마지막으로 Create 버튼을 클릭합니다.
  • 이 절차를 마치면 시스템 키 체인에서 새 인증서를 볼 수 있습니다.새로 만든 인증서의 컨텍스트 메뉴(오른쪽 클릭)에서 정보 가져오기 옵션을 선택합니다.대화상자에서 신뢰 항목을 펼치고 코드 서명을'시종 신뢰'로 설정합니다.
  • 그런 다음 왼쪽 열쇠고리 목록에서 시스템 항목을 마우스 오른쪽 버튼으로 클릭하고 열쇠고리 "System"잠금을 선택합니다.
  • 마지막으로 시스템을 다시 시작합니다.
  • gdb 인증서 서명


    지금 당신은 증서에 서명해야 합니다.gdb 권한이 부여된 파일을 만듭니다.xml.이것은 macOS 신뢰 gdb 동작을 디버깅할 수 있도록 합니다.방금 만든 xml 파일에 다음 내용을 입력하고 저장합니다.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.security.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
        <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
        <key>com.apple.security.cs.disable-executable-page-protection</key>
        <true/>
        <key>com.apple.security.cs.debugger</key>
        <true/>
        <key>com.apple.security.get-task-allow</key>
        <true/>
    </dict>
    </plist>
    
    이제 터미널 프로그램으로 돌아가서 xml 파일을 저장하는 디렉터리로 이동합니다.
    * 참고 <다음 명령의 gdbPath > 은 gdb로 가는 경로입니다.이렇게 될 거예요.
    /usr/local/Cellar/gdb/version/bin/gdb
    또는
    /usr/local/bin/gdb.
    터미널에 다음을 입력하여 정답을 확인할 수 있습니다.
    which gdb
    
    를 gdb 경로로 대체합니다.
    codesign --entitlements gdb-entitlement.xml -fs gdb-cert <gdbPath>
    
    이 중 gdbcert는 이전에 만든 인증서의 이름입니다. gdbPath는 gdb 바이너리 파일의 전체 경로입니다.

    gdb 명령 파일 만들기


    이 단계에서 다음 중 하나를 수행합니다.
    또는
  • 홈 디렉토리에 라는 새 파일을 만듭니다.gdbinit.다음 명령을 기록하고 저장합니다.
  • set startup-with-shell off
    
    또는
  • 터미널에 다음을 입력합니다.
  • echo "set startup-with-shell off" >> ~/.gdbinit
    

    생성


    우리 거의 다 왔어!현재 gdb를 사용하여 디버깅을 시도하면'기호표 불러오지 않음'오류가 발생할 수 있습니다.이 문제를 해결하기 위해서는 다음과 같은 예와 같이 -ggdb 옵션 컴파일러를 사용해야 합니다.
    gcc hello_world.c -o hello_world -ggdb.
    
    이 때, gdb를 사용하여 Mac에서 디버깅에 성공할 수 있을 것입니다.실행을 통한 테스트 (예:):
    gdb hello_world
    
    그런 다음 gdb 프롬프트에서 브레이크를 생성합니다.
    (gdb)break main
    
    다음을 참조하십시오.
    Breakpoint 1 at 0x100000de5: file hello_word.c, line 15.
    
    나는 네가 바라는 결과를 보았으면 좋겠어!진전이 어떤지 알 수 있도록 댓글을 남겨 주세요!
    참조 목록:
  • https://www.thomasvitale.com/how-to-setup-gdb-and-eclipse-to-debug-c-files-on-macos-sierra/
  • https://coderwall.com/p/wyb2ug/how-fix-the-no-symbol-table-is-loaded-gdb-issue-on-mountain-lion
  • 좋은 웹페이지 즐겨찾기