크래시 유틸리티는 다양한 메모리 및 파일 시스템 디버깅 기능을 제공합니다.
그 중에 유용한 기능 중 하나를 소개합니다.
* files -p '아이노드 주소'
먼저 다음 명령어를 입력해 오픈된 파일에 대한 파일 디스크립터, 아이노드 그리고 덴트리를 확인 합니다.
* files <pid>
crash> files 1664
PID: 1664 TASK: dc270000 CPU: 1 COMMAND: "Chrome-proc.anim"
ROOT: / CWD: /
FD FILE DENTRY INODE TYPE PATH
0 de4d8200 e1a33ab0 e0ce8dd8 CHR /dev/null
1 de4d8200 e1a33ab0 e0ce8dd8 CHR /dev/null
...
32 dd0cb000 dd4c0000 e02a6af8 REG /system/framework/framework-res.apk
33 dd0cbf00 dd470558 e038daf8 REG /data/media/0/Pictures/Screenshots/Screenshot_20191217-134455.png
이어서 아이노드 주소와 함께 아래 명령어를 입력합니다.
crash> files -p e038daf8
INODE NRPAGES
e038daf8 489
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
e731eba0 7925d000 e038dbf4 269 1 40010228 uptodate,lru,arch_1,mappedtodisk
e7602300 90418000 e038dbf4 517 1 4001026c referenced,uptodate,lru,active,arch_1,mappedtodisk
e71e4980 6f54c000 e038dbf4 803 6 4021026c referenced,uptodate,lru,active,arch_1,mappedtodisk,r_readahead
e71ffdc0 702ee000 e038dbf4 804 4 4021022c referenced,uptodate,lru,arch_1,mappedtodisk,r_readahead
e7b6f900 bbac8000 e038dbf4 805 2 40210268 uptodate,lru,active,arch_1,mappedtodisk,r_readahead
e721e040 71202000 e038dbf4 806 2 40010268 uptodate,lru,active,arch_1,mappedtodisk
무려 489개의 페이지가 해당 Screenshot_20191217-134455.png 파일의 아이노드에 액세스하고 있습니다.
이번에는 다른 명령어를 입력해 볼까?
* files -d <덴트리 주소>
crash> files -d dd470558
DENTRY INODE SUPERBLK TYPE PATH
dd470558 e038daf8 e1cad800 REG /data/media/0/Pictures/Screenshots/Screenshot_20191217-134455.png
덴트리에 대한 경로 파일을 확인할 수 있다.
해당 파일에 대한 슈퍼 블럭을 확인한 ex4 파일 시스템의 슈퍼 블럭임을 확인할 수 있다.
crash> struct super_block e1cad800
struct super_block {
s_list = {
next = 0xe1cae000,
prev = 0xe4bc4000
},
s_dev = 265289728,
s_blocksize_bits = 12 '\f',
s_blocksize = 4096,
s_maxbytes = 17592186040320,
s_type = 0xc1733a2c <ext4_fs_type>,
s_op = 0xc1017f00 <ext4_sops>,
dq_op = 0xc1017f98 <ext4_quota_operations>,
s_qcop = 0xc1017fc0 <ext4_qctl_operations>,
s_export_op = 0xc1017f74 <ext4_export_ops>,
'[Debugging] Tips' 카테고리의 다른 글
[리눅스커널] 인터럽트 핸들러 실행 시각 측정 디버깅 패치 (0) | 2023.05.04 |
---|---|
[리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기 (0) | 2023.05.04 |
[TRACE32] gcore 크래시 유틸리티로 유저 프로세스의 콜스택 보기 (0) | 2023.05.04 |
[리눅스커널][디버깅] ftrace: ftrace를 비활성화하기 (0) | 2023.05.04 |
[TRACE32] 폰트(FONT) 사이트 변경 (0) | 2023.05.04 |