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
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바