GDB 소개와 사용 예제 (GNU DEBUGGER)
By 이것저것 | 2017년 4월 4일 |
GDB 소개GNU 디버거이며, 간략하게 줄여서 GDB라고 불리는 이 소프트웨어는 GNU 소프트웨어 시스템을 위한 표준 디버거이다. GDB는 다양한 유닉스 계열 시스템에서 동작하며, C, C++, 포트란을 비롯한 수많은 프로그래밍 언어를 디버깅하도록 도와주는 이식성 높은 디버거이다. 단순하고 직관적인 디버거GDB는 CLI(명령 라인 인터페이스)를 통해 각종 정보를 제공하는데, 메모리 정보, 스택 정보, 레지스터 정보 등 매우 다양한 정보를 제공한다. GDB는 기본적으로 프로세스 단위로 정보를 제공한다 GDB의 디버깅 방법C소스 각각 한 행은 한 묶음의 어셈블리 코드와 대응. (C++도 동일하다) 컴파일이 끝난 후 생성되는 각 어셈블리 코드 묶음을 C 소스의 각 행과 비교할 수 있게 소스 파일과 해당 인
[리눅스] GDB 프로그램 사용 위치 파악: 'which -a'
By Guillermo Austin Kim | 2020년 6월 4일 |
gdb와 같은 프로그램이 설치된 경로를 확인하고 싶을 때가 있습니다.이 때 다음 명령어를 사용하면 됩니다. 'which -a' 아래는 터미널에서 'which -a' 명령어를 사용한 예시입니다. baldcandy:#/etc$ which -a gdb-multiarch/usr/bin/gdb-multiarch gdb-multiarch가 '/usr/bin/gdb-multiarch' 에 위치해 있군요. 이번에는 gdb 프로그램의 위치를 확인해보겠습니다. baldcandy:#/etc$ which -a gdb/usr/bin/gdb gdb가 '/usr/bin/gdb' 에 위치해 있군요. ---"이 포스팅이 유익하다고 생각되시면 공감 혹은 댓글로 응원해주시면 감사하겠습니다. "혹시 궁금한 점이 있으면 댓글로 질
[리눅스][디버깅] GDB로 깨진 콜 스택 복원하기(공유 라이브러리 로딩하는 방법)
By Guillermo Austin Kim | 2020년 6월 2일 |
리눅스 프로젝트를 개발하면 코어덤프(coredump)를 열어서 크래시가 발생한 원인을 분석할 때가 많습니다.많은 개발자 분들이 코어덤프를 열어서 크래시가 발생한 원인을 분석하죠. 코어덤프를 열어 gdb를 사용해 디버깅할 때 가장 짜증나는 것 중 하나는 공유 라이브러리를 제대로 로딩하지 못해콜 스택이 보이지 않을 때 입니다. 이번에는 코어덤프를 로딩할 때 필요한 정보 중 하나인 공유 라이브러리의 정보(패스/이름)을 확인하는 방법을 소개합니다. 깨진 콜 스택 확인하기 먼저 콜 스택을 보겠습니다. (gdb) bt#0 0x0000007f7def1808 in __glibc_raise (sig=sig@entry=6) at /usr/glibc/raise.c:1354#1 0x0000007f7def2d80 in
[GDB] Arm(Armv7): C 코드와 어셈블리 코드를 동시에 디버깅하기
By Guillermo Austin Kim | 2021년 3월 31일 |
이번 포스트에서는 GDB를 사용해 디버깅을 하는 방법을 소개합니다. 소개된 내용을 참고하면 즐겁게 어셈블리 명령어를 디버깅할 수 있습니다. 환경: 라즈베리 파이4 GDB 실행 아래 명령어를 사용해 GDB를 Text User Interface 모드로 실행합니다. $ gdb -tui armv7_aapcs_proc 다음은 위 명령어로 실행한 화면입니다. 이제 바로 다음 명령어를 입력해 어셈블리 명령어 창을 보이도록 합시다. $ layout split 이번에는 'b main'와 'r' 명령어를 입력해 main() 함수에 브레이크 포인트를 걸고 프로그램을 실행합니다. 위 명령어를 입력하면 다음과 같은 화면이 보입니다. 위 화면과 같이 main() 함수의 첫 번째 라인에 브레