close

System.map

Przejdź do nawigacji Przejdź do wyszukiwania

System.map  to plik zawierający symboliczną tablicę adresów funkcji i procedur używanych przez jądro systemu operacyjnego Linux . Ta tabela zawiera nazwy zmiennych i funkcji oraz ich adresy w pamięci komputera . Ta tabela jest bardzo przydatna podczas debugowania jądra w przypadku paniki jądra lub problemów z Linuksem . System.mapgenerowane podczas kompilacji jądra .

Tablica adresów symbolicznych dla załadowanego jądra znajduje się również w pliku /proc/kallsyms.

Tworzenie pliku

Plik System.mapmożna utworzyć za pomocą polecenia nm -n vmlinux > System.map. Podczas kompilacji jądra używa się następującego polecenia (skrypt /usr/src/linux/scripts/mksysmap, wersja jądra 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, gdzie $1jest plik vmlinux, $2jest plik System.map.

Wnętrzności

Przykład zawartości pliku System.map:

c040f4ec b local_apic_timer_verify_ok
c040f4f0 b wynik_kalibracji
c040f4f4 b enabled_via_apicbase
c040f4f8 b apic_phys
c040f500 b apic_pm_state
c040f538 B nmi_aktywne
c040f53c B nmi_watchdog_enabled
c040f540 B unknown_nmi_panic
c040f544 b backtrace_mask
c040f548 b zamek.19318
c040f54c b nmi_pm_active
c040f550 b last_irq_sums
c040f560 b alert_counter

System.mapjest tworzony z każdą kompilacją jądra ze względu na fakt, że w różnych wersjach mogą występować różne adresy procedur [1] .

Typy postaci

Druga kolumna wskazuje typ symbolu (duże litery oznaczają symbol globalny lub eksportowany, małe litery oznaczają lokalny):

  • A to wartość bezwzględna.
  • B lub b to znak w sekcji niezainicjowanych danych (zwykle określanej jako BSS).
  • D lub d to znak w zainicjowanej sekcji danych.
  • G lub g to znak w zainicjowanej sekcji danych dla globalnych małych obiektów.
  • i jest sekcją specyficzną dla biblioteki DLL.
  • N to znak debugowania.
  • p jest sekcją rozwijania stosu.
  • R lub r to znak w sekcji tylko do odczytu.
  • S lub s to znak w niezainicjowanej sekcji danych dla małych obiektów.
  • T lub t to znak w sekcji kodu.
  • U jest niezdefiniowanym symbolem.
  • V lub v to słaby obiekt.
  • W lub w to słaby obiekt, który nie został tak oznaczony
  • - oznacza znak skrótu w pliku obiektowym a.out
  • ? oznacza nieokreślony typ postaci

Lokalizacja w systemie plików

Po zbudowaniu jądra Linux plik System.mapznajduje się w /usr/src/linux/. Jednak niektóre programy wymagają go w innych miejscach i czasami pod inną nazwą, np . . Na przykład, aby zbudować SVGAlib, potrzebujesz pliku w katalogu/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ znaczenie faktu? ] .

Zobacz także

Notatki

  1. Co to jest plik System.map? (niedostępny link) . Pobrano 20 września 2011 r. Zarchiwizowane z oryginału w dniu 10 maja 2017 r. 

Linki

  • Plik System.map  (angielski)  (łącze w dół) . - Informacje o symbolach, tablicach symboli i pliku System.map. Pobrano 20 września 2011. Zarchiwizowane z oryginału w dniu 19 maja 2012.