objdump debuging & Null pointer Exception
2021. 8. 6. 16:52ㆍIT
반응형
내가 지금 데몬이 죽는데 이 데몬이 죽는현상을 어디서 죽는지 알아야하는 상황..
그러려면 주소값을 따라가야하는데
그 주소값이 어디의 뭐냐 이거지..
[ 389.910495] chanmon[6390]: unhandled level 1 translation fault (11) at 0x00000000, esr 0x92000005
[ 389.914870] pgd = ffffffc03ac6c000
[ 389.927242] [00000000] *pgd=0000000000000000, *pud=0000000000000000
[ 389.934417]
[ 389.934609] CPU: 0 PID: 6390 Comm: chanmon Tainted: P 4.4.60 #167
[ 389.936195] Hardware name: Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C3 (DT)
[ 389.943882] task: ffffffc03001c200 ti: ffffffc03001c200 task.ti: ffffffc03001c200
[ 389.950751] PC is at 0x5589afb354
[ 389.958188] LR is at 0x5589afb390
[ 389.961578] pc : [<0000005589afb354>] lr : [<0000005589afb390>] pstate: 60000000
이게 문제의 값인데,
여기서 저 PC is ~ 이 값을 봐야한다고 한다
그럼 저 주소값을 어떻게 찾느냐?
데몬 compile해서 만들어진 실행파일 binary 파일이 있을거아님?
그걸로...
../../../staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-objdump -d chanmon > log
요런식으로 해서
log 파일을 열면
chanmon: file format elf64-littleaarch64
Disassembly of section .init:
0000000000002590 <_init>:
2590: a9bf7bfd stp x29, x30, [sp,#-16]!
2594: 910003fd mov x29, sp
2598: a8c17bfd ldp x29, x30, [sp],#16
259c: d65f03c0 ret
Disassembly of section .plt:
00000000000025a0 <vsprintf@plt-0x20>:
25a0: a9bf7bf0 stp x16, x30, [sp,#-16]!
25a4: f00000f0 adrp x16, 21000 <_fini+0x12710>
25a8: f9461611 ldr x17, [x16,#3112]
25ac: 9130a210 add x16, x16, #0xc28
25b0: d61f0220 br x17
25b4: d503201f nop
25b8: d503201f nop
25bc: d503201f nop
00000000000025c0 <vsprintf@plt>:
25c0: f00000f0 adrp x16, 21000 <_fini+0x12710>
25c4: f9461a11 ldr x17, [x16,#3120]
25c8: 9130c210 add x16, x16, #0xc30
25cc: d61f0220 br x17
00000000000025d0 <memcmp@plt>:
25d0: f00000f0 adrp x16, 21000 <_fini+0x12710>
25d4: f9461e11 ldr x17, [x16,#3128]
25d8: 9130e210 add x16, x16, #0xc38
25dc: d61f0220 br x17
00000000000025e0 <ioctl@plt>:
25e0: f00000f0 adrp x16, 21000 <_fini+0x12710>
25e4: f9462211 ldr x17, [x16,#3136]
25e8: 91310210 add x16, x16, #0xc40
25ec: d61f0220 br x17
00000000000025f0 <mcr_wl_socketConvertToSimpleMacStrUpper@plt>:
25f0: f00000f0 adrp x16, 21000 <_fini+0x12710>
25f4: f9462611 ldr x17, [x16,#3144]
25f8: 91312210 add x16, x16, #0xc48
25fc: d61f0220 br x17
.....
뭐 이런식으로 쭉 보인다.. ㅎㅎ
하지만 해결책이 이것이 아니였다고 한다..
이전에 사용하던 소스라 문제가 없어야하는데 , (그대로 갖다썼는데)
왜 죽냐이거야 !!!
그래서 노가다 하면서 막으면서 찾아봤더니,
값이 없어서 Null 값인걸 갖다가 return 값에 쓰고있으니 바로 뻗는것이였다 ^_^..... 아오....
꼭 값을 정의해주자 ... 아니근데 왜 이게 다른데서는 된거지..? 이해가 안가네...
728x90
반응형
'IT' 카테고리의 다른 글
Ubuntu service Enable/Disable (2) | 2022.06.08 |
---|---|
[linux] 서버 core 갯수 확인 command, make -j option (0) | 2022.02.17 |
Linux squashfs 파일 (0) | 2021.08.04 |
md5sum (0) | 2021.08.02 |
Mount 란 (0) | 2019.06.26 |