응용 프로그램 충돌 후 커널 로그 출력의 일부 응용 프로그램 충돌 로그에서 공유 라이브러리 함수를 찾는 방법 :여기
kernel: [ 252.772000] testsnd/972: potentially unexpected fatal signal 11.
...
kernel: [ 252.788000] PC is at 0x296313a4
...
kernel: [ 252.820000] mmap = 0x00400000->testsnd 0x29558000->ld-2.10.1.so 0x29580000->libpthread-2.10.1.so 0x295a8000->libdl-2.10.1.so 0x295bc000->librt-2.10.1.so 0x295d4000->libc-2.10.1.so
응용 프로그램이 libc의 추락했다. 이 정보 (0x295d4000->libc-2.10.1.so
및 PC는 0x296313a4
)를 사용하여 충돌이 발생한 함수 이름을 얻는 방법은 무엇입니까?
"기본 주소를 알고 있다면 ..."이것은 * 정확하게 * 커널 메시지가 제공 한 것입니다. '0x296313a4 '주소는'0x295d4000'에로드 된'libc-2.10.1.so'에 매핑됩니다. –
이것은 완벽합니다. 전에 objdump -x와 -d를 사용 했었지만, -SR이 훨씬 뛰어났습니다. 디버그가 켜져있을 때 C++ 코드를 보여줍니다! –