GDB

    [gdb] The GNU Debugger : 3. Stack 정보 분석하기

    스택은 현재 프로세스가 실행 중인 코드가 어디인지 확인할 수 있기에 매우 중요한 정보라고 할 수 있습니다. gdb에서는 종료되지 않은 함수를 하나의 frame이라고 합니다. 각 프레임은 스택에 쌓여있는 함수, 아직 종료되지 않은 함수라고 보시면 됩니다. 각 프레임은 Caller와 Callee의 관계를 구성하게 되죠. 이번 예제는 아래 코드를 사용하겠습니다. #include #include void func4(int a, int b) { printf("sum : %d\n", a + b); } void func3(int a, int b) { return func4(a, b); } void func2(int a, int b) { return func3(a, b); } void func1(int a, int b..

    [gdb] The GNU Debugger : 2. 중단점 설정하기

    중단점 설정은 gdb에서 매우 중요한 기능입니다. 여기서는 간단한 명령어 설명을 한 후 다음에서 중단점을 사용해 분석하는 방법에 대해 설명드리겠습니다. 중단점 (Break Point) 설정하기 (break / b)중단점은 함수이름이나 코드 라인번호 등을 통해 설정할 수 있습니다. 여러분들이 중단점을 설정 후 프로그램을 실행하면 해당 위치가 만약 수행된다면 자동적으로 해당 지점에서 실행이 중단됩니다. 이 시점의 모든 정보를 여러분들이 확인할 수 있습니다. 이 중단점에서 즉 해당 상태에서 변수나 스택구조, 어셈블리 등 다양한 정보를 얻을수도 있고 여러 동작을 조작할 수도있습니다. (gdb) b sumBreakpoint 1 at 0x400570: file example1.c, line 6. 위의 예제 코드에서..

    [gdb] The GNU Debugger : 1. Introduction

    [gdb] The GNU Debugger : 1. Introduction

    Introduction좋은 디버거는 문제를 해결하고, 프로그램을 좀 더 쉽게 개발하고 리버싱을 하는 등 다양한 방안에서 개발자에게 도움을 주는 도구 입니다. 많은 플랫폼에서 그에 맞춰 좋은 디버거들이 존재하고 개발자들은 자신에게 맞는 디버거를 사용하고 있습니다. 그 중 GDB(The GNU Debugger)는 많은 플랫폼, x86, x86-64, arm, aarch64, mips, SPARC등 다양한 아키텍처 에서 동작하는 UNIX 시스템에서 사용할 수 있는 디버거입니다. C / C++ 로 작성된 프로그램에서 사용할 수 있습니다. 처음 GDB를 공부하시는 분들이 많이 어려워 하시는게 언제 GDB를 사용해야 하는지 입니다. 디버거는 여러분들이 작성하는 프로그램에서 발생하는 문제를 해결하는데 매우 도움을 주..