본문 바로가기

[Debugging] Tips

[리눅스커널] 크래시 유틸리티: files -p '아이노드 주소' + files -d '덴트리 주소' 디버깅

크래시 유틸리티는 다양한 메모리 및 파일 시스템 디버깅 기능을 제공합니다.
그 중에 유용한 기능 중 하나를 소개합니다.
 
   * 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>,