리눅스에서 프로그램을 코딩할 때 따로 IDE를 사용하는 것이 있다면 모르겠지만..
기본적으로 gdb를 사용해서 디버깅을 할 것이다.
gdb의 기능은 무궁무진하기도 해서..
활용을 잘하면 굉장한 디버깅 툴이긴 하다.
이런 gdb에 단점이 있었다면 프로그램 코드를 함께 보면서 디버깅을 진행할 수가 없어서 불편했었다.
그래서 필자 같은 경우에는 프로그램 코드를 따로 켜서 진행했었는데..
역시, 무식하면 몸이 고생한다는 걸까..
gdb도 프로그램 코드를 따로 보면서 진행할 수 있었다..
물론 cgdb를 이용하면 쉽지만, 임베디드 시스템에서 디버깅을 하다보면, cgdb를 이용하지 못하는 경우가 있으므로..
여튼, gdb에서 프로그램 코드를 함께 보면서 디버깅 하는 방법을 소개하려고 한다.
먼저, gdb를 실행한 후, 아래와 같은 명령어를 입력하자.
(혹시나, gdb로 디버깅이 안된다고 하시는 분들이 계실 수 있는데, 컴파일할 때 -g 옵션을 주면 됩니다.)
1 | layout src | cs |
그러면 아래와 같이, gdb 화면에 위에는 프로그램 코드가 보이는 창과 아래는 gdb 명령을 입력할 수 있는 창으로 나뉘게 된다.
여기서, 브레이크 포인트를 주면 B+ 와 같이 표시가 되고, 현재 위치한 행은 하얗게 표시된다.
또한, 프로그램 코드와 함께 스택 상태창도 보는 방법이 있다. 혹시나, 리버싱을 하는 사람에게는 꼭 필요한 기능이 아닐까 싶다.
아래처럼 명령어를 입력해보자.
1 | layout split | cs |
이외에도 layout 명령어에는 여러 기능이 있다.
gdb를 입력한 상황에서 아래처럼 help를 입력해보자.
1 | help layout | cs |
입력해봤다면, 여러 기능이 있다는 것을 알텐데.. 간단하게 설명하자면 아래와 같다.
layout src : 소스 코드와 명령 창을 보여주는 모드.
layout asm : 디스어셈블리와 명령 창을 보여주는 모드
layout split : 소스 코드, 디스어셈블리 그리고 명령 창을 보여주는 모드
layout resg : 레지스터 창을 보여주는 모드.
layout prev : 이전 모드로 이동.
layout next : 다음 모드로 이동.
'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글
VIM 사용법 정리 (1) - vim의 모드별 설명, 파일 열기, 저장 및 종료 방법 (0) | 2019.06.13 |
---|---|
[Linux] Vim 화면 분할, (상/하/좌/우 분할 방법 정리) (0) | 2018.07.22 |
[Linux] gdb 긴 문자열 전부 출력하는 방법 (0) | 2018.06.20 |
[Linux] 리눅스 USB FAT32 포맷하는 방법 정리 (0) | 2018.06.17 |
[Linux] zdump 로 지역별 GMT/ DST 알아내기 (0) | 2018.06.07 |
댓글