[Linux] GDB (GNU Debugger) 사용하기 - 5
- 코드 라인 추적하기
(gdb) backtrace
backtrace (약자 'bt') 커맨드를 사용하면 프로그램이 중단 되었을 때 또는 현재 실행 중인 코드 위치를 확인 할 수 있습니다.
고의적으로 문제를 유발하는 코드를 작성 해 봅시다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* str;
void allocate(void)
{
str = (char*)malloc(sizeof(char) * 10);
}
void deallocate(void)
{
free(str);
free(str); // -> 에러 발생을 위해 free를 2번 호출 하였습니다.
}
void assign(void)
{
strcpy(str, "Hello World");
}
int main(void)
{
printf("Start\n");
allocate();
assign();
printf("str = %s\n", str);
deallocate();
printf("End\n");
return 0;
}
gdb 로 오픈하고, run 커맨드를 입력하면 프로그램이 뻗게 되는데, 이 상태에서 backtrace 커맨드를 입력 해 봅시다.
어떤 문제로 죽었고, 어디에서 유발시켰는지 알려줍니다.