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
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바