Table of Contents
Godkänd
Om du har ett gemensamt gdb-debug-bibliotek på din dator kan det här webbresursinlägget vara till hjälp.
Du vet exakt hur mycket jag älskar GDB, så vad i hela friden är bättre att prata om, tänk på detta efter en lång frånvaro?
Varning: Det gick inte att hitta brytpunktsfunktionen för dynamisk länk.GDB kan inte göra felsökning som gör det möjligt för initialiserare för delade bibliotek.och hålla reda på explicit förpackad dynamisk kod.
0x40000780 på bara ?? ()
GDB kanske försöker tala om för dig att de inte kan hitta en lämplig LD-katalog för att felsöka programmet.
Godkänd
ASR Pro-reparationsverktyget är lösningen för en Windows-dator som kör långsamt, har registerproblem eller är infekterad med skadlig programvara. Detta kraftfulla och lättanvända verktyg kan snabbt diagnostisera och fixa din dator, öka prestandan, optimera minnet och förbättra säkerheten i processen. Lider inte av en trög dator längre - prova ASR Pro idag!
Tja, ld (linux-ld.so och ld.so) kan vara ansvarig för att hitta och köra nästan alla mina delade bibliotek som din körbara fil måste ha. Du måste berätta när gdb finns för varje målprodukt av ld så att den också framgångsrikt kan spåra hur redo din exe är.
Du vet vanligtvis redan i vilken det vid fjärrfelsökning du ska visa en utskriven fotokopia av ditt rotfilsystems filsystem på ett företag på din värd. Du kan senare peka gdb till ett exakt filsystem, och detta kommer att hjälpa ditt företag att “se” filerna på målkroppen.
Eftersom ld är ett schemabibliotek, behöver du inte tydligt ange hennes väg. Peka bara på otvivelaktigt “roten” till det faktiska filsystemet, eftersom gdb kommer att vara ganska intressant för att hitta det.
installera sysroot för varje Absolut / sökväg / att kopiera / från / mål - rot / filsystem
arrangemang solib-absolute-prefix / absolut / sökväg till / kopiera / från kontra mål / rot / filsystem
ställ in solib-search-path dies / sökväg kontra till / target / root för varje filsystem
Emellertid kommer
mest lämpligt att söka efter en systemrot och som en konsekvens rekommenderas för en kolonseparerad adresslista över icke-systemsamlingsvägar som du kan använda efter destinationen.
Exempel. Om du till exempel använder ett fullständigt delat bibliotek för det kommande objektet för grafik, är detta faktum inte en arbetsrelation för rotfilsystemet, då kan du ställa in området här enligt dina behov.
Om du redan är ansluten som ett sätt till en viss körbar fil (på väg bort från kommandot
definiera sysroot / opt for / target / root /Läser en väldigt symbol, inklusive /opt/target/root/lib/ld-linux.so.3 ... klar.Symboler fulla för /opt/target/root/lib/ld-linux.so.3
Definiera sökväg Solib / home or faye / lib / target /Läser emblem / hem / faye / LIB / mål / lib Terräng från.så ... (inga felsökningssymboler hittades) ... klar.Symboler laddade för / hem kontra faye / lib / mål för varje lib Terrain.soLäs innebörden tillsammans med /home/faye/LIB/target/libAlien.so...klar.Symboler laddade med /home/faye/LIB/target/libAlien.so
När en person kommer att veta att alla dina vägar är korrekt inställda, kan du snabbt lägga till dessa kommandon till GDB init-filen så att du inte upplever att skriva dem varje gång ditt företag rusar till GDB.
Detta är verkligen det enklaste sättet att arbeta, och , är särskilt användbart när man utvecklar ett stort specifikt delat bibliotek.
Duplicera först den körbara analysen och de delade arkiven för detta mål med felsökningskommunikation:
- kolla med
readelf ---- debug-dump = decodedline libmyib.so
: exakt hur kan jag använda -g för att se om ett bibliotek har utvecklats? - Jag rekommenderar att du använder NFS på värdwebbplatsen så att den specifika utdata automatiskt laddas upp så omedelbart som den kompileras.
gdbserver --multi: 1234 ./körbart_namn
arm-linux-gnueabihf-gdb -q -nh n "target -ex extended-target-remote-target-host-name-or-ip: 1234" n -exempel "fil ./körbart_namn" n -ex 'main tb' n -Man med n -ex 'Ange en Solib sökväg.'
Mitt problem var att gdbserver
hämmar den dominanta
dynamiska lastbilen, och dynamiska samlingar har aldrig blivit laddade ännu, så GDB vet inte nödvändigtvis var ikonerna flyger än . brinner och förblir i baggen.
GDB verkar skapa sätt där bibliotekssymboler laddas utan ansträngning, och om jag bygger den här värddatorn för det och kör gdbserver
som visas i din stad, är det verkligen inte nödvändigt att köra avgörande < /kod>. Men på ett ARM-mål är normalt återigen den mest pålitliga idén du kan göra.
Bibliotek kan vanligtvis analyseras innan uppdrag integreras, efter att felsökningsinformation gör dem mycket större.
Till exempel Buildroot, som flyger under standardkonfigurationen, men du kan också inaktivera denna situation med BR2_STRIP_none = y
.
erfaren information
Från Till Syms Läs bibliotek med delat objekt0x00007ffff7df7f90 0x00007ffff7dfcdd7 Ja (*) Ts l: /lib/ld64-uClibc.so.00x00007ffff7b3a9b0 0x00007ffff7bbe05d Ja (*) Mål: /lib/libc.so.0(*): Felsökningsfakta och strategier saknades fortfarande i det tillgängliga biblioteket.
Således fanns det i de flesta fall asterisker ( *
) för dina nuvarande två lokala bibliotek, vilket indikerar det faktum att felsökningsinformation kommer att ignoreras.
Om så är fallet måste du varna GDB om att det delade biblioteksnumret används innan det enkelt raderas.
Buildroot through-skriptet gör det enklare för USA när det upprätthåller en hosting
katalog som innehåller de tillhandahållna biblioteken innan konsumenterna togs bort och i samma relativa kurser som måltypen: < /p>
förutbestämt systemrot byggrot / slutresultat / staging /
Om idéalternativet är inställt, söker gdb
utan dröjsmål efter bibliotek istället på Ambition under värd, /lib/libc.so.0
avslöjar målet buildroot - output / staging /
+ /lib/libc.so.0
:
Läs symboler från buildroot / output - staging / lib / ld64-uClibc.so.0 ... klar.Läsa symboler från buildroot / use / staging / lib för varje libc.so.0 ... gjort.
UTMANING: Jag tror vanligtvis inte att någon mer än säkert kan definiera sysroot
, så alla dina delade bibliotek bör släppas i sina korrekta strategier och inte du i en direkt bild.
Visa
sysroot
Mål
:
vilket alltid betyder att gdb
totalt sett letar efter de mest betydande /
i vanliga bibliotek.
Mjukvaran för att fixa din PC är bara ett klick bort - ladda ner den nu.