You are currently viewing Beste Manier Om Problemen Met De Interpretatie Van Linux-kerneldumpbestanden Op Te Lossen

Beste Manier Om Problemen Met De Interpretatie Van Linux-kerneldumpbestanden Op Te Lossen

 

Soms geeft uw systeem waarschijnlijk een foutcode weer die u inzicht geeft in hoe u het Linux-kerneldumpbestand moet interpreteren. Er kunnen verschillende redenen zijn voor dit probleem.

Bijgewerkt

  • 1. Download ASR Pro
  • 2. Voer het programma uit
  • 3. Klik op "Nu scannen" om eventuele virussen op uw computer te vinden en te verwijderen
  • Versnel uw computer vandaag nog met deze eenvoudige download.

     

     

    G. G.

      # nanoSegmentatie onjuist doen  
      # nanoHet kerneldump-dilemma# lsKern  
      $ arm-linux-gdb -c Nano coreDe kernel is gegenereerd door `nano'.Programma beëindigd met transmissie SIGSEGV, segmentatiefout.# 0 0x00019f14 aan de binnenkant signal_init () in nano. = C: 11921192 * handtekening SIGINT;  
      $ arm-linux-gdb -je zou waarschijnlijk nano-tui kern doen  
      (gdb) printerteken$ 1 betekent (int *) 0x0(gdb) bt# 7 0x00019f14 alleen in signal_init () op nano.c: 1192# ten eerste 0x0001b264 hoogstens waardevol (argc = 0, argv = 0xbee9de64) in nano.Can c: 2568  
    • gebruik oude GDB om gebroken rimpels te vinden, zoals eerder vermeld in: Hoe kan ik een kerndumpbestand met GDB ontleden als er een opdrachtregelparameters heeft?
    • hoofdbestand opgebouwd uit CLI-argumenten, geen noodzaak om de community opnieuw in te dienen
    • objdump -s core kan worden gekocht om opslagapparaten te dumpen.
      #include #include #include #include myfunc-interval (i-interval)    (int *) (NULL) betekent i; / 3 . Regel 7 * /    stuur i - 1 terug;int hoofd (int argc, char ** argv)    / * Herinnering configureren. * /    char data_ptr [] betekent "String in een specifiek segment";    char * mmap_ptr;    char text_ptr = "Lijn rond tekstsegment";    (leeg) argv;    mmap_ptr komt overeen met (char *) malloc (sizeof (data_ptr) + 1);    strcpy (mmap_ptr, data_ptr);    mmap_ptr [10] 'm'; = mmap_ptr [11] 'm'; komt overeen met mmap_ptr [12] = 'a';    mmap_ptr [13] is 'p';    printf ("tekstadres:% p  n", text_ptr);    printf ("gegevensadres:% p  n", data_ptr);    printf ("mmap-adres:% k  n", mmap_ptr);    / * Roep de functie aan om de stapelindex voor te bereiden. 1 . /    return -ggdb3 myfunc (argc); 
      gcc -std = c99 -Wall -Wextra -pedantic -o main.out main.culimit -c onbeperktrm -f kernel./ Hoofduitgang 
      Tekst adres: 0x4007d4Gegevens-url: 0x7ffec6739220mmap-adres: 0x1612010Lege segmentatiefout) 

    GDB (Core voegt ons toe op de regel waar deze delingsfouten optraden, wat veel gebruikers willen hebben bij het debuggen:

      gdb -q -nh main.out core 
      Main.out symbolen lezen ... klaar.[Nieuwe LWP 27479]De kernel werd verondersteld al gegenereerd te zijn door `./main.out '.Programma beëindigd met SIGSEGV, delingsfout.# 0 0x0000000000400635 in myfunc (ik impliceert 1) naast main.c: 77 * (int *) (NULL) past bij i;(gdb) bt# 0 0x0000000000400635 in myfunc Op (i = 1) main.c: 7# 1 0x000000000040072b om mee te beginnen (argc = 1, argv = 0x7ffec6739328) tot en met main.c: 28 

    CLI-argumenten worden opgeslagen in een hoofdbestand en mogen niet naar huis worden doorgegeven

    Om specifieke vragen over CLI-geschillen te beantwoorden, zien we dat wanneer velen van ons bijvoorbeeld CLI-argumenten vervangen. met:

    hoe een linux core-dumpbestand succesvol te interpreteren

      rm -h core./hoofd.uit 1 2 

    dan wordt dit soort get weergegeven in de vorige Bactrace-bezit-sets in onze commando’s:

      Main.out symbolen lezen ... klaar.[Nieuwe LWP 21838]De kernel is gemaakt door `./main.out 9 2 '.NSHet programma is losgelaten met een SIGSEGV-signaal, segmentatiefout.# 2 0x0000564583cf2759 in myfunc (i = 3) op main.c: 77 1 . (geheel getal *) (NULL) = i; / - Groep 7 * /(gdb) bt# 0 0x0000564583cf2759 myfunc voornamelijk in (i = 3) op main.c: 7# verschillende 0x0000564583cf2858 thuis (argc = 3, argv is gelijk aan 0x7ffcca4effa8) op main.c: 2 

    Dus, pagina hoe vanaf deze dag argc = verschillende . Dit zou dus moeten betekenen dat het bekende bestand deze informatie momenteel opslaat. Als het alleen maar gissen is, wordt dit alleen gelogd als er een tegenspraak is met main , het zou bijvoorbeeld je huidige argumenten naar een andere andere functie loggen.

    Dit is echt logisch, op voorwaarde dat wanneer de kernel wordt verwijderd, al het systeemgeheugen en de status van het register altijd moeten worden opgeslagen, wat betekent dat het alle feitelijke informatie heeft die nodig is om de waarde te krijgen die lijkt op de functieargumenten door het bepalen van de huidige lading van de zonnebatterij.

    hoe een linux body dump-bestand te interpreteren

    De manier om naar landschapsvariabelen te kijken is minder voor de hand liggend: hoe die omgevingsvariabele uit een kerneldump te halen Hoeveelheden van omgevingsvariabelen bestaan ​​ook in het geheugen, dus objdump bevat dergelijke informatie, maar ik weet niet hoe ik de meeste gemakkelijk tegelijk moet opnemen.body voor zo’n, maar werkte aan mijn tests:

      p __over [0] 

    Bijgewerkt

    Bent u het beu dat uw computer traag werkt? Geërgerd door frustrerende foutmeldingen? ASR Pro is de oplossing voor jou! Onze aanbevolen tool zal snel Windows-problemen diagnosticeren en repareren, terwijl de systeemprestaties aanzienlijk worden verbeterd. Dus wacht niet langer, download ASR Pro vandaag nog!


    Door gebruik te maken van Binutils-materialen zoals readelf en objdump , kunnen we de informatie in de core standaardiseren bestand zoals unces

    Het meeste / alles zou ook via GDB te zien moeten zijn. Gelukkig bieden deze Binutils-tools een rijkere benadering die handig is voor onderscheidende gebruiksscenario’s, terwijl GDB beter geschikt is om meer interactieve verkenning te krijgen.

    kernbestand

      

    laat ons zien dat het grootste deel van het key bestand eigenlijk een bestand is:

      core: elf 64-bit ELF LSB Core Lodge x86-64, versie 1 (SYSV), SVR4-stijl, van './main.out' 

    Om deze reden kunnen we dit veel directer controleren met de gebruikelijke Binutils-tools.

    Een snelle blik op de ELF-standaard onthult dat het eigenlijk een ELF-type targeting zou kunnen zijn, zodat het:

    hoe een linux coreshed-bestand te interpreteren

      Elf32_Ehd.e_type == ET_CORE 
      man 5 core 
      kernleeszelf 

    geeft wat informatie over de structuur van de indiening. Geheugen inbegrepen in de kopjes van het dagelijkse schema:

      Programmatitel:  Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align  OPMERKING 0x000468 0x000000000000000000 0x000000000000000000 0x000b9c 0x000000 0  LADEN 0x002000 0x000000000000400000 0x000000000000000000 0x001000 0x001000 R E 0x1000  LADEN 0x003000 0x000000000000600000 0x000000000000000000 0x001000 0x001000 R 0x1000  LADEN 0x004000 0x00000000601000 0x000000000000000000 0x001000 0x001000 LE 0x1000 

    en er is slechts een hoeveelheid extra metadata in het lokale Notes-gebied, met name gevonden prstatus bevat pc:

      Toont notities geïdentificeerd door bestandsoffset 0x00000468 met een som van 0x00000b9c:  Beschrijving van de bestelling van de eigenaar:  CORE 0x00000150 NT_PRSTATUS (prstatus-structuur)  CORE 0x00000088 NT_PRPSINFO (prpsinfo-structuur)  CORE 0x00000080 NT_SIGINFO (siginfo_t-gegevens)  CORE 0x00000130 NT_AUXV vector) (Kleine CORE 0x00000246 NT_FILE (betreffende bestanden)    Paginagrootte: 4096                 Offset vanaf het begin om u te helpen eindigen    0x000000000000400000 0x000000000000401000 0x000000000000000000        /home/ciro/test/main.out   0x000000000000600000 0x000000000000601000 0x000000000000000000        / hoofd / ciro versus test / hoofd. het einde   0x000000000000601000 0x000000000000602000 0x000000000000001        /home/ciro/test/main.out    0x00007f8d939ee000 0x00007f8d93bae000 0x000000000000000000         /lib/x86_64-linux-gnu/libc-2.23.so     0x00007f8d93bae000 0x00007f8d93dae000 0x00000000000001c0        /lib/x86_64-linux-gnu/libc-2.23.so    0x00007f8d93dae000 0x00007f8d93db2000 0x00000000000001c0       /lib/x86_64-linux-gnu/libc-2.23. Dus   0x00007f8d93db2000 0x00007f8d93db4000 0x00000000000001c4        /lib/x86_64-linux-gnu/libc-2.23.so    0x00007f8d93db8000 0x00007f8d93dde000 0x000000000000000000         /lib/x86_64-linux-gnu/ld-2.23. Dus   0x00007f8d93fdd000 0x00007f8d93fde000 0x00000000000000025        /lib/x86_64-linux-gnu/ld-2.23.so    0x00007f8d93fde000 0x00007f8d93fdf000 0x00000000000026        /lib/x86_64-linux-gnu/ld-2.23.so  CORE 0x00000200 NT_FPREGSET (register met zwevende som)  LINUX 0x00000340 NT_X86_XSTATE (x86 XSAVE uitgerekte staat) 
      objdump -beds core 
      Inhoud van de load1 sectie: 4007d0 01000200 6e672069 73747269 6e207465 .... koord voor het geval te 4007e0 78742073 65676d65 6e740074 65787420 xt segment.tekstLoad15 bericht sectie: 7ffec6739220 73747269 6e672069 6e206461 74612073 Tekenreeks in gegevens 7ffec6739230 65676d65 6e740000 00a8677b 9c6778cd Voorbeeld .... g {.gx.Inhoud van artikel 1612010 load4: 73747269 6e672069 6e206d6d 61702073 mmap s snoer 1612020 65676d65 6e740000 11040000 00000000 Element .......... 

    Dit is getest op Ubuntu 16.04 amd64, GCC 6.4.0 en binutils 2.26.1.

     

     

    Versnel uw computer vandaag nog met deze eenvoudige download.

    Hoe lees ik een ab dump-bestand?

    Druk tijdens het lopen op Ctrl + om de daadwerkelijke kerndump te tonen. U ziet nu zeker het basisbestand in de service waarin u zich bevindt. Aangezien we niet alle uitvoerbare symbolen voor foutopsporing hebben om dit te ondersteunen, opent onze verkrijging gewoon de onderliggende gegevens in gdb als vervanging van het uitvoerbare symbolenbestand + basisbestand .

    Hoe ontcijfer ik een kernbestand?

    Als je het hoofdmuziekbestand probeert te gokken, zorg er dan voor dat het zonder twijfel op het besturingssysteem staat waarmee het oorspronkelijk beschikbaar was. Kopieer het hoofdbestand naar een stad zoals deze als deze nog niet bestaat:interrupt levert de resultaten [bestand:]. Stel een breekpunt in op de functie-intensiteit (in het bestand).fraude plegen]bt.Afdrukkentegen.Volgende.Bewerk de functie [Bestand:].

    Hoe onderzoek ik een crashdumpbestand in Linux?

    Installeer de Kdump-tools. Installeer eerst kdump dat deel uitmaakt van het pakket kexec-tools.Plaats de crash-kernel via grub. Conf.Configureer de locatie van de dump.Stel de hoofdverdeelleiding in.Start kdump-services opnieuw.Voer handmatig een vitale dump uit.Kijk kernbestanden.Kdump-analyse met crash.

     

     

     

    How To Interpret A Linux Core Dump File
    Comment Interpréter Un Fichier De Vidage De Mémoire Linux
    Как интерпретировать файл дампа ядра Linux
    Linux 코어 덤프 파일을 해석하는 방법
    Jak Zinterpretować Plik Zrzutu Rdzenia Systemu Linux?
    So Interpretieren Sie Eine Linux-Core-Dump-Datei
    Come Interpretare Un File Dump Del Core Di Linux
    Hur Man Tolkar En Linux Core Dump-fil
    Cómo Interpretar Un Archivo De Volcado De Núcleo De Linux
    Como Interpretar Um Arquivo Linux Core Dump