2017-10-13 8 views
0

KASLR이 활성화되어 있으면 심볼 파일과 실제 심볼 위치 사이에 오프셋이 있습니다. KASLR이 활성화 된 상태에서 GDB가 커널 심볼을 올바르게로드 할 수 없음

% cat /proc/kallsyms| grep '\<jiffies_64\>' 
ffffffff86805000 D jiffies_64 
% objdump -t /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64 | grep '\<jiffies_64\>' 
ffffffff81c05000 g  O .data 0000000000000008 jiffies_64 

은 텍스트 섹션 위치 찾기, 그래서 제대로 심볼 파일을로드 할 수 있습니다

% sudo gdb -c /proc/kcore 
GNU gdb (Debian 8.0-1) 8.0 
(gdb) add-symbol-file /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64 0xffffffff85c00000 
add symbol table from file "/usr/lib/debug/boot/vmlinux-4.13.0-1-amd64" at 
    .text_addr = 0xffffffff85c00000 
(y or n) y 
Reading symbols from /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64...done. 

GDB :

% cat /proc/kallsyms | grep '\<_text\>' 
ffffffff85c00000 T _text 

하지만을 나는 보정 위치에 기호 파일을로드하는 경우에도 여전히 잘못된 기호 위치를 제공 :

(gdb) p &jiffies_64 
$1 = (u64 *) 0xffffffff81c05000 <jiffies_64> 

GDB가 심볼을 올바른 위치에로드하도록하려면 어떻게해야합니까?

+0

인터넷이 가장 좋은 방법이라고 말한다에'일시적으로 비활성화 kaslr' 단지 @ttsiodras로 고 밝혔다. –

답변

1

저의 겸허 한 의견으로, 재부팅 할 때마다 기호를 "춤"하지 않고도 디버깅 커널은 충분히 어렵습니다.

말을하는 것입니다

, 당신의 커널에 nokaslr을 통과 고려 아마도 가치가 - 적어도 디버깅하는 동안 ...

+0

이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 포스트/17802984) – Bart

+0

@ 바트 : 나는 겸허하게 동의하지 않습니다. 이 질문은 IMHO XY 문제의 경우였습니다. 그래서 근본적인 문제를 해결하는 해답을 제시했습니다. – ttsiodras