[Linux][Kernel] T32 - Linked List 디버깅 cmm Script

Guillermo Austin Kim|2017년 12월 3일
Posts

[Linux][Kernel] T32 - Linked List 디버깅 cmm Script

Guillermo Austin Kim|2017년 12월 3일

리눅스 커널 데이터 스트럭쳐 내 수 많은 linked list를 확인할 수 있어요.예를 들어 struct kset이란 구조체도 첫번 째 멤버로 list란 링크드 리스트죠. struct kset { struct list_head list; //<<-- spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops;}; 실제 코어 덤프를 T32로 열어서 상세 구조체를 보면 아래와 같거든요.kset_find_obj( [R5] kset = 0xED74A980 -> ( [NSD:0xED74A980] list = ( //<<-- [NSD:0xED74A980] next = 0

Related Posts

3 posts

vscode c++ build 및 debug하기

vscode로 C++코드를 빌드하고 테스트 하려고 하면 초기 셋팅을 해야 하는게 귀찮아서 잘 안하다가 다시 셋팅하는법 간단히 정리 합니다. 1. c++ package설치. 2. ctrl+shift+p configure build task 로 tasks.json 셋팅 (이때 windows는 cpp file을 열고 있어야 함.) 컴파일러 선택 빌드는 ctrl + shift + B를 눌러서 빌드하면됨아니면 ctrl + shift + p를 눌러서 run build task를 검색해서 실행해도 됨. 3. launch.json 만들고 빌드후 debugging. (디버깅 하기)configure 추가. (Run - launch.json file

[커널크래시] 인터럽트 컨텍스트에서 wake_up_interruptible 대신 wake_up_locked 사용

Guillermo Austin Kim|2022년 1월 5일

인터럽트 컨텍스트에서 슬립을 지원하는 커널 함수를 호출하면 어떻게 동작할까요? 커널 패닉이 유발됩니다.이번에는 인터럽트 컨텍스트에서 발생한 커널 패닉 이슈를 소개합니다. 먼저 커널 로그를 소개합니다. [1.538173] BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:973[1.577234] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/3[1.578316] Preemption disabled at:[1.597859] CPU: 3 PID: 0 Comm: swapper/3 [1.617377] Hardware name: rpi[1.6

[리눅스커널][Arm64] 유저 공간(EL0)에서 시스템 콜 번호는 어떻게 지정할까?

Guillermo Austin Kim|2021년 8월 21일

이번에는 64비트 기반 리눅스 커널에서 구동되는 라즈비안에서 시스템 콜 번호를 확인해 보겠습니다. 이를 위해 바이너리 유틸리티를 활용해 libc 라이브러리를 어셈블리 명령어로 분석할 필요가 있습니다. root@raspberrypi:/usr# find . -name libc.a./lib/aarch64-linux-gnu/libc.aroot@raspberrypi:/usr# objdump -d ./lib/aarch64-linux-gnu/libc.a > code_libc.c 위 명령어로 '/usr/lib/aarch64-linux-gnu/libc.a' 라이브러리 파일을 어셈블리 코드로 변환하게 됩니다. x8 레지스터에서 시스템 콜 번호를 지정 __libc_write() 함수를 분석하면 x8 레지스터에 시