이전에는 많은 혼란이있었습니다. static
, dynamic(.so)
뿐만 아니라 시간에 내가 알고 해달라고하면 kallsyms (module symbols)
을 포함하고 다른 실행 -vmlinux 바이너리의 모든 기호 정보를 인쇄하십시오.
나는 power-pc
아키텍처 vmlinux
진에서 모든 상징적 정보를 인쇄 할.
내가 GDB
, readelf
, /proc/kallsyms
또는 system.map
를 사용하거나 core file
을 받고에서 (actually I can not and its difficult to explain here why
)를 관심하고 있지 않다.
GDB, readelf, objdump, kallsyms or systme.map
이 어떻게 생성되는지 더 많이 알고 있습니다. 그들이 사용하는 커널 데이터 구조는 무엇입니까? 그들이 사용하는 것을 선호하는 라이브러리 -
libelf
또는 libdwarf
는 지금까지 나의 이해는 말한다 : 모든 정적 정보
- 사용
libelf/libdwarf
. rld_map
섹션은 동적 .so 파일에 대해 구문 분석되어야합니다.kallsyms
의 경우 동적으로 추가되는 LKM에 대한 기호 정보를 처리하는 방법을 모르겠습니다.
위의 상황을 고려하여 처음부터 도구를 작성하는 것이 현명한 결정인지 알려주세요. 이제는 libdwarf를 사용하여 모든 함수 이름과 그 주소 목록을 얻을 수있었습니다.
위의 상황에서 사용하는 것이 가장 좋거나 처음부터 무언가를 쓰지 않고 위의 시나리오에서 다소 수정 될 수있는 소스 코드를 누군가가 나를 안내 할 수 있습니까? 아니면 실제로 가능하지 않습니다. (readelf/objdump/GDB의 스 니펫 일 수도 있습니다.)
필요하다면 명확히하고 업데이트하십시오.
감사합니다.
엘프 사양과 링커 및 로더의 작동 방식을 살펴 보시기 바랍니다. 재미 나 배우기를 원하지 않는 한 처음부터 쓰는 것은 매우 나쁜 생각입니다. – Sasi