반응형

GDB : GNU Debugger의 줄임말로 GNU 소프트웨어 시스템을 위한 기본 디버거입니다.

 

GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로, 에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원합니다.

 

 

저의 MacOS 환경 : MacBook Pro - macOS Big Sur (version : 11.0)

 

 

참고 블로그

 

dev.to/jasonelwood/setup-gdb-on-macos-in-2020-489k

 


1. MacOS에 homebrew가 설치되었는지 확인.

 

먼저, 자신의 MacOS에 homebrew가 설치되어 있어야 합니다.

 

아래의 사진처럼 MacOS 내에 있는 터미널에서 brew --version 명령어를 입력하여 homebrew가 설치되어 있는지 확인해 줍니다.

 

 

만약 설치 되어 있지 않다면

 

아래의 사진과 같이 homebrew를 설치해줍니다.

 

homebrew 공식 홈페이지 -> brew.sh/index_ko

 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

 


2. GDB 설치

 

이제 GDB를 설치하겠습니다.

 

만약 자신의 MacOSGDB를 설치한 적 있다면 아래의 사진과 같이 gdb --version을 입력하여 설치 여부를 확인해 줍니다.

 

 

GDB 설치가 되어 있지 않다면 아래의 사진과 같이 GDB를 설치해줍니다.

 

그리고 다시 한 번 gdb --version을 입력하여 잘 설치가 됐는지 확인해줍니다.

 

brew install gdb

 

gdb --version

 

 


3. 인증서 생성

 

MacOS 내의 Launchpad에서 '키 체인 접근'을 검색한 뒤 키 체인 접근 아이콘을 클릭하여 프로그램을 열어줍니다.

 

그리고 아래의 3번 째 사진과 같이 '키 체인 접근' 프로그램 창이 켜져 있으면 왼쪽 상단의 메뉴바키 체인 접근의 메뉴로 바뀝니다.

 

그러면 아래의 순서를 따라 인증서 생성 창을 띄웁니다.

 

메뉴바 -> 키체인 접근 -> 인증서 지원 -> 인증서 생성...

 

 

launchpad

 

키 체인 접근

 

 


3-2

 

위에서 '인증서 생성...' 을 누르면 아래의 창이 뜰 것입니다.

 

아래의 사진과 같이 입력하고 계속을 눌러줍니다.

 

아래의 2번째 사진과 같이 메시지 창이 뜨면 계속을 눌러주면 됩니다.

 

 

 


3-3

 

아래의 사진과 같은 화면이 뜨면

 

사진의 내용과 같이 입력하고 계속을 눌러줍니다.

 

 


3-4

 

여기서부터는 다음 단계인 3-5의 사진과 같은 화면이 뜨기 전까지 계속을 눌러줍니다.

 

 


3-5

 

아래의 사진과 같이 인증서 위치 지정 부분이 나오면 사진의 내용과 같이 '시스템'으로 바꾸고 생성을 눌러줍니다.

 

그리고 '완료' 창이 뜨면 '완료'를 눌러주면 인증서 생성이 완료됩니다.

 

 


4. 인증서 설정

 

다시 '키 체인 접근'으로 돌아가서 아래의 사진처럼

 

왼쪽 항목들에서 '시스템'을 선택합니다.

 

아까 3번에서 인증서 생성 중 설정했던 gdb 인증서를 우클릭합니다.

 

그리고 '정보 가져오기'를 눌러줍니다.

 

 


4-2

 

'정보 가져오기' 창에서

 

'신뢰' 항목을 펼쳐보면

 

아래의 사진처럼 '이 인증서 사용 시' 항목이 있습니다.

 

이 항목의 값을 '항상 신뢰'로 변경한 뒤 '정보 가져오기' 창을 끔으로써 해당 인증서를 항상 신뢰할 수 있도록 해줍니다.

 

그리고 자신의 MacOS를 재부팅해줍니다.

 

 


5. 추가 설정

 

 

자신의 MacOS를 재부팅한 뒤

 

아래의 내용이 적힌 gdb-entitlement.xml 이라는 이름의 xml 파일을 만듭니다.

 

참고) 저는 저의 홈 디렉터리gdb-entitlement.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>

 

 


 

5-2

 

다시 MacOS 내의 터미널로 돌아와서 자신의 GDB가 어디에 설치되어 있는지 확인해 줍니다.

 

which gdb

 

 

저의 MacOS에서 GDB가 설치된 경로가 /usr/local/bin/gdb 입니다.

 


5-3

 

아래의 명령어를 입력하여 인증서 관련 설정을 마무리해줍니다.

 

아래의 명령어에서 <gdbPath> 부분에는 자신의 MacOS에서 GDB가 설치된 경로를 입력해 줍니다.

 

그리고 아래의 명령어에서 gdb-cert자신이 설정한 GDB 관련 인증서 이름을 지정하시면 됩니다.

 

codesign --entitlements gdb-entitlement.xml -fs gdb-cert <gdbPath>

 

 


5-4

 

그리고 Terminal에서 아래의 명령을 입력하여 GDB command file을 생성해 줍니다.

 

echo "set startup-with-shell off" >> ~/.gdbinit

 

 


GCC를 이용해서 컴파일한 .c 파일GDB로 디버깅해보고 싶다면

 

GCC를 이용하여 컴파일할 때 옵션으로 ' -g ' 를 넣어주어야 합니다.

 

ex) gcc -g -o test test.c

 


이렇게 하면 MacOS에서도 GDB를 사용하실 수는 있습니다.

 

아래는 실제로 Hello World! 를 출력해주는 .c 파일GDB로 디버깅해보는 사진입니다.

 

반응형

+ Recent posts