Kernel 및 System call 디버그 with GDB

2025. 7. 28. 14:41·Linux

이전 포스트에서 커널에 새로 시스템콜을 추가함

시스템콜을 GDB를 사용해 추적하기

QEMU 디버그 모드로 실행

  • QEMU 실행 시, -s -S 옵션
    • -s : gdb가 붙을 수 있도록 1234포트 개방
    • -S : QEMU가 시작하자마자 멈추는 상태로
  • ARCH=arm64 make menuconfig 실행 후,
    • Kernel hacking -> Kernel debugging 선택
    • Kernel hacking -> Compile-time checks and compiler options -> Rely on the toolchain's implicit default DWARF version 선택
  • 커널 재 컴파일

new_syscall함수에 break point

커널에 gdb를 붙이고, qemu포트 1234로 접속한 뒤

new_syscall 함수에 브레이크 포인트를 걸었다.

과정

cont입력

브레이크 포인트까지 실행,

SYSCALL_DEFINE1 매크로에서 멈춘다. (이전에 작성했던 시스템콜)

next입력

내부적으로 syscall_set_return_value가 실행

시스템콜의 리턴값 설정하며, 여기서의 ret이 최종적으로 사용자 공간에 전달될 리턴값

 

'Linux' 카테고리의 다른 글

커널 모듈 (insmod, lsmod, rmmod) 커널 API  (5) 2025.07.30
ls 명령어 분석 with strace  (1) 2025.07.29
커널 시스템콜 추가  (3) 2025.07.25
Makefile  (2) 2025.07.24
OS 기초 이론  (0) 2025.07.23
'Linux' 카테고리의 다른 글
  • 커널 모듈 (insmod, lsmod, rmmod) 커널 API
  • ls 명령어 분석 with strace
  • 커널 시스템콜 추가
  • Makefile
Minu Jin
Minu Jin
정보의 바다
  • Minu Jin
    뇌 구조가 바이너리
    Minu Jin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C++
    시스템콜
    커널 기여
    동적메모리
    리눅스
    드라이버 분석
    스택
    c언어
    토발즈
    포인터
    이진 트리
    커널
    Qualcomm
    Branch
    순환
    rubikpi3
    yolo
    Git
    버퍼
    소수
    arm
    백준
    INIT
    파이썬
    자료구조
    commit
    앤드류모튼
    피보나치
    파일 입출력
    rubik pi
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minu Jin
Kernel 및 System call 디버그 with GDB
상단으로

티스토리툴바