램덤프 대신에 vmcore 파일을 올리려면 다음과 같은 커맨드를 입력하면 된다.
$ d.load.e vmlinux 0xdeadbee0
$ d.load.e vmcore /nocode /nosymbol /physload
1. vmlinux 로딩 방법
KASLR 컨피그로 빌드된 경우 아래와 같이 로딩하면 된다.
$ d.load.e vmlinux 0xdeadbee0
만약 KASLR 컨피그 없이 빌드한 경우 아래 명령어를 실행하면 된다.
$ d.load.e vmlinux
2. vmcore 로딩 방법
vmcore를 실행할 때 반드시 옵션을 잘 적용해야 한다.
$ d.load.e vmcore /nocode /nosymbol /physload
or
$ d.load.e vmcore /nc /ny /physload
/nosymbol:
심벌을 로딩하지 않는 옵션이다. vmlinux에 심벌이 있으니 필요없다.
/physload:
말 그대로 DRAM에 있는 덤프만 로딩하는 옵션이다.
3. MMU 설정
기존 MMU 설정 명령어를 그대로 설정하면 된다.
PER.Set SPR:0x30200 %QUAD 0x00000000418a2000 ;TTBR0_EL1
PER.Set SPR:0x34200 %QUAD 0xc0956b709140eedc ;TTBR0_EL2
PER.Set SPR:0x36200 %QUAD 0xfb2c6bcafaf9a6e7 ;TTBR0_EL3
PER.Set SPR:0x30201 %QUAD 0x000000004268b000 ;TTBR1_EL1
PER.Set SPR:0x30100 %QUAD 0x0000000034d5d91d ;SCTLR_EL1
PER.Set SPR:0x34100 %QUAD 0xd791d032d40525a2 ;SCTLR_EL2
PER.Set SPR:0x36100 %QUAD 0x765a0d8bd8e11b19 ;SCTLR_EL3
PER.Set SPR:0x30202 %QUAD 0x00000032b5593519 ;TCR_EL1
PER.Set SPR:0x34202 %QUAD 0x1f55a748cfcf3fce ;TCR_EL2
PER.Set SPR:0x36202 %QUAD 0x0009b670c520231b ;TCR_EL3
위 명령어 중에 TTBR1_EL1를 설정하는 코드가 가장 중요하다.
그 다음으로 아래 명령어를 입력하자.
mmu.format linuxswap3 swapper_pg_dir 0xffffffc000000000--0xffffffffffffffff 0x0000000040000000
trans.common 0xffffff8000000000--0xffffffffffffffff
trans.tw on
trans.on
mmu.scan
mmu.list.pagetable 0xffffffc000000000
Happy, Debugging!
BR,
Austin Kim
'[Debugging] Tips' 카테고리의 다른 글
[라즈베리파이] crash-utility 설치(Arm64) (0) | 2023.05.04 |
---|---|
[Crash-Utility] 램덤프를 로딩할 때 심볼을 읽는 함수: symbol_exists, readmem (0) | 2023.05.04 |
[Crash-Utility] 램덤프 로딩 시 파라미터(CONFIG_PROC_KCORE) (0) | 2023.05.04 |
[리눅스] 라즈베리 파이: coredump 추출 방법 + gdb 디버깅 방법! (0) | 2023.05.04 |
TRACE32] cmm script to traverse task_struct of all processor for BSP engineers (0) | 2023.05.04 |