[Linux] GDB (GNU Debugger) 사용하기 - 4

 

  • 변수에 접근 되는 시점에 브레이크 포인트 걸기
(gdb) watch [변수]


변수 스코프(scope)가 매칭되어야 왓치포인트(Watchpoint)를 설정 할 수 있습니다.

즉, 전역 변수는 아무곳에서나 Watchpoint를 설정할 수 있지만, 지역 변수는 해당 변수의 scope에서만 Watchpoint를 설정 할 수 있습니다.


// watch.c

#include <stdio.h>

int main(void)
{
        int i;

        printf("Start\n");

        for(i=0; i<10; i++) {
                printf("i = %d\n", i);
        }

        printf("End\n");

        return 0;
}


gdb로 실행 파일을 오픈합니다.

바로 Watch 포인트를 걸 수 없으므로,

우선 라인7에 브레이크 포인트를 걸고 run 커맨드로 실행을 해서, main 함수 스코프로 진입하게 합니다.

그 다음에 'watch i'를 입력하여 i 변수에 Watch 포인트를 겁니다.

브레이크 포인트와 마찬가지로 info break 커맨드를 통해 Watch 포인트도 확인 할 수 있습니다.


Continue 커맨드를 입력 할 때마다, 변수 i 의 값이 바뀌는 것을 확인 할 수 있습니다.



  • 특정 조건 만족시 Breakpoint 걸기
(gdb) break [라인넘버] if [조건]

예를 들어, 10번째 라인에 i가 5일 때 브레이크 포인트가 걸리게 하고 싶다면,

break 10 if i==5 라고 입력하면 됩니다.


break info 커맨드로 확인 하면 다음과 같이 나옵니다.


이 블로그의 인기 게시물

Crusader Kings 3 - Converting DNA code using Portrait Editor