close

Systeem.map

Ga naar navigatie Ga naar zoeken

System.map  is een bestand met een symbolische tabel met adressen van functies en procedures die worden gebruikt door de kernel van het Linux -besturingssysteem . Deze tabel bevat de namen van variabelen en functies en hun adressen in het computergeheugen . Deze tabel is erg handig bij het debuggen van de kernel in het geval van kernel panic of Linux oeps . System.mapgegenereerd wanneer de kernel wordt gecompileerd .

De symbolische adrestabel voor de geladen kernel bevindt zich ook in het /proc/kallsyms.

Een bestand maken

Het bestand System.mapkan worden aangemaakt met het commando nm -n vmlinux > System.map. Bij het compileren van de kernel wordt het volgende commando gebruikt (script /usr/src/linux/scripts/mksysmap, kernelversie 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, where $1is file vmlinux, $2is file System.map.

Ingewanden

Voorbeeld bestandsinhoud System.map:

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

System.mapwordt gemaakt met elke kernel-build vanwege het feit dat er in verschillende versies verschillende adressen van procedures kunnen zijn [1] .

Karaktertypes

De tweede kolom geeft het type symbool aan (hoofdletters betekent globaal of geëxporteerd symbool, kleine letters betekent lokaal):

  • A is de absolute waarde.
  • B of b is een teken in het gedeelte met niet-geïnitialiseerde gegevens (meestal BSS genoemd).
  • D of d is een teken in het gedeelte met geïnitialiseerde gegevens.
  • G of g is een teken in de sectie met geïnitialiseerde gegevens voor globale kleine objecten.
  • i is een DLL-specifieke sectie.
  • N is een debug-teken.
  • p is de stapelafwikkelsectie.
  • R of r is een teken in een alleen-lezen sectie.
  • S of s is een teken in de niet-geïnitialiseerde gegevenssectie voor kleine objecten.
  • T of t is een teken in een codesectie.
  • U is een ongedefinieerd teken.
  • V of v is een zwak object.
  • W of w is een zwak object dat niet zo is gelabeld
  • - staat voor het stub-teken in het objectbestand a.out
  • ? betekent ongedefinieerd tekentype

Locatie op het bestandssysteem

Nadat de Linux-kernel is gebouwd, bevindt het bestand System.mapzich in de /usr/src/linux/. Sommige programma's vereisen het echter op andere plaatsen en soms met een andere naam, zoals . Dus om bijvoorbeeld SVGAlib te bouwen, heb je een bestand in de directory nodig/boot/System.map-$(uname -r)System.map/lib/modules/$(uname -r)/build/[ betekenis van het feit? ] .

Zie ook

Opmerkingen

  1. Wat is het System.map-bestand? (niet beschikbare link) . Ontvangen 20 september 2011. Gearchiveerd van het origineel op 10 mei 2017. 

Links

  • System.map-bestand  (Engels)  (downlink) . - Informatie over symbolen, symbooltabellen en het bestand System.map. Ontvangen 20 september 2011. Gearchiveerd van het origineel op 19 mei 2012.