GDB Debugging에서 attach 시에는 정보 획득이 불가하네요
/root # gdb -p 539
Loaded symbols for 길어서 생략
0xffff0520 in ?? ()
(gdb) x/12i main
0x2208d8 : Cannot access memory at address 0x2208d8
(gdb) x/12i main
0x2208d8 : Cannot access memory at address 0x2208d8
(gdb) x/12i main
0x2208d8 : Cannot access memory at address 0x2208d8
(gdb) detach
Detaching from program: /root/AAAA, process 539
보다시피 attach 한 경우에는 main에 대한 정보조차 불러오질 못합니다.
그러나 파일명을 명시하고 불러들인 이후 main에 대한 정보를 확인할 경우에는 정상적으로 정보를 가지고 옵니다.
/root # gdb AAAA
Reading symbols from /root/AAAA...(no debugging symbols found)...done.
(gdb) x/12i main
0x2208d8 : push {r4, r5, r6, r7, r8, lr}
0x2208dc : mov r5, r1
0x2208e0 : ldr r7, [pc, #240] ; 0x2209d8
0x2208e4 : sub sp, sp, #272 ; 0x110
0x2208e8 : ldr r6, [pc, #236] ; 0x2209dc
0x2208ec : str r0, [r7]
0x2208f0 : str r1, [r6]
0x2208f4 : ldr r8, [r1]
0x2208f8 : ldrsb r3, [r8]
0x2208fc : cmp r3, #47 ; 0x2f
0x220900 : beq 0x2209bc
0x220904 : ldr r1, [pc, #212] ; 0x2209e0
(gdb) quit
/root #
둘의 차이는 위의 경우는 run 중이고 아래의 경우는 run은 아니고 심볼 정보만 불러온 경우인데
왜 정보를 못가지고 오는 것일까요?
일단 제한된 환경(임베디드)이고 파일이 실행 파일이 20메가인 점이 특이사항이라고 볼 수 있을 것 같습니다.
제가 우분투에서 할 때 gdb 에서 attach 를
제가 우분투에서 할 때 gdb 에서 attach 를 하기 위해서는 root 권한이 있어야 하더군요.. 위와 비슷한 문제가 있는 경우 sudo 로 실행하니 잘 되었습니다. 비슷한 문제일지는 확실히 모르겠지만요...
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
우분투는 아니지만 root 권한입니다.
우분투는 아니지만, root 권한으로 gdb 실행한 경우입니다.
임베디드쪽이라 sudo가 없습니다.
댓글 달기