디버깅을 위해 NetBSD 커널을 사용하고 있는데 gdb
, 주소가 위치한 메모리 영역에 대한 정보를 표시할 수 있으면 좋겠습니다. 나는 주로 메모리 페이지의 권한과 여기에 포함된 메모리 페이지의 크기를 알아내는 데 관심이 있습니다(질문의 후반부가 의미가 있는 경우).
커널에는 커널 공간 메모리 영역이라는 개념이 있나요? 즉, 특정 목적을 위해 예약된(어딘가에서 추적되는) 연속 페이지 블록(가상 주소)입니까? 아니면 어떤 메모리 블록이 논리 그룹에 속하는지 추적하는 것은 각 특정 모듈에 달려 있습니까?
내가 찾고 있는 것의 예는 다음과 같습니다.
(gdb) addressinfo 0xffffffff80e1000
Start End Offset Perm Size
0xffffffff80e0000 0xffffffff80e2000 0x1000 r--p 0x2000
이 기능이 존재하지 않는다면 GDB 스크립트가 이 정보를 출력할 수 있도록 커널에 후크를 추가해도 괜찮습니다. 페이지 권한을 보려면 최소한 GDB 스크립트에 후크를 추가하는 것이 유용할 것입니다.