리눅스

    [커널분석] Architecture 별 분석을 위한 설정 (ctags & cscope)

    리눅스 커널 분석 시 많이 사용하는 툴로 ctags와 cscope를 많이 사용합니다. 하지만 분석 시 다양한 architecture에 따라 동일 네이밍의 함수나 매크로 등으로 인해 분석하기 쉽지 않은데요. 쉽게, 해결할 수 있는 방법을 알려드립니다. 리눅스 커널에서 스크립트 형태로 tags와 cscope란 옵션을 제공하고 있습니다.만약 arm64를 기반으로 분석한다고 하면 아래와 같이 설정해 주세요. $ make tags ARCH=arm64 $ make cscope ARCH=arm64 내부적으로 script를 작성해 놓았기 때문에 해당 Architecture에 해당하는 코드만 분석할 수 있습니다.

    [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..