2
임베디드 PPC 플랫폼에서 디버깅을하고 있습니다. (아치는 ppc750입니다.) 바이너리가 충돌하면 gdb에 'info registers'를 입력하면 DAR (데이터 액세스 레지스터)의 내용을 볼 수 없습니다.), 어떤 프로그램이 읽는 것을 메모리 주소를 표시해야합니다 - 나는 나에게 예외의 유형을 알려줍니다 만 트랩 레지스터 얻을 :gdb를 사용하여 PPC에서 DAR (데이터 액세스 레지스터)의 내용을 어떻게 볼 수 있습니까?
(gdb) info registers
r0 0x1034875e 271877982
r1 0x7fffed30 2147478832
r2 0xfd7f7a0 265811872
[...]
pc 0xf18d718 0xf18d718
msr 0xd032 53298
cr 0x80000848 2147485768
lr 0xf18d6f8 0xf18d6f8
ctr 0xf235d90 253975952
xer 0x20000000 536870912
orig_r3 0x26 38
trap 0x300 768
이도 가능를? gdb 7.0.1을 사용하고 있습니다. (오래된 것입니다.하지만 최신 버전은 우리의 고대 툴체인과 잘 어울리지 않습니다.)
아니요, "베어 메탈"에서는 디버깅하지 않지만 사용자 공간에서는 Linux에서 디버깅하지 않습니다. 나는 PPC에서도 SIGSEGV가 수신되면 무효 액세스를 야기한 주소가 신호 처리기 (si_addr 필드, IIRC)에서 사용 가능하다는 것을 알아 차렸다. 정보가 gdb에서 사용 가능한지 여부는 궁금합니다. gdb리스트에있는 사람들에 따르면, PPC의 $ _siginfo를 gdb 7.5에서 검사했지만, 우리는 고대 toolchain으로 빌드 된 바이너리로 7.3 이상을 사용하는 데 문제가있었습니다. – fencekicker