Virheenjäljitystieto-paketit
Tämä sivu sisältää pakkaajille tietoa debuginfo-paketeista ja niitä koskevista yleisistä sudenkuopista. Katso käyttötiedot ja selitys, miksi debuginfo-paketit ovat tärkeitä, osoitteesta StackTraces.
Tarkistaa debuginfo-paketin käyttökelpoisuuden
Käyttökelpoinen debuginfo-paketti sisältää poistettuja symboleja ELF-binaareista (*.debug muodossa /usr/lib/debug) sekä niihin liittyvän lähdekoodin (hakemistossa /usr/src/debug). Paketit luova komentosarja on /usr/lib/rpm/find-debuginfo.sh. Lue se läpi saadaksesi peruskäsitys niiden luomisesta. Jos debuginfo-pakettisi ei sisällä tiedostoja tai siitä puuttuu lähteet tai *.debug-tiedostojen koko on odottamattoman pieni (yleensä *.debug ovat suurempia kuin vastaava binaari, josta se poistettiin alkaen), paketissasi on todennäköisesti virhe. Näin ei kuitenkaan aina ole, jatka lukemista.
Käyttökelvottomat tai epätäydelliset debuginfo-paketit johtuen pakkausongelmista
Käyttökelvottomat tai puutteelliset debuginfo-paketit ovat usein seurausta pakkausvirheistä. Tyypillisiä virheitä, jotka usein ilmenevät debuginfo-paketteina, jotka eivät sisällä tiedostoja:
-
Määritelmä-tiedosto tai paketin rakennusrutiinit pyytävät poistamaan symbolit binaareista. Etsi kutsuja
strip,install -s,ld -staigcc -sjne. ja poista ne (tai-s-liput). Menetelmä tämän tekemiseen vaihtelee, jotkin esimerkkitapaukset sisältävät korjauksen käyttäen%configuretaimake-kohteelle, joka estää poistamisen , ja/tai strip-komennon ohittamisen, kuten esimerkiksimake install STRIP=/bin/true -
Pakettia ei ole merkitty
noarch, mutta se ei sisällä mitään arkkitehtuurista riippuvaisia asioita (natiivibinäärit, arkkitehtuurista riippuvaiset polut jne.). Todellisetnoarch-paketit eivät sisällä mitään, mitä rpmbuild voisi poistaa niistä, joten niiden odotetaan olevan tyhjiä, josBuildArch: noarchpuuttuu. Jos näin on, tee paketistanoarch. -
find-debuginfo.shkäsittelee vain tiedostoja, jotka ovat suoritettavissa, kun se suoritetaan; Käytännön syistä voidaan olettaa, että se tapahtuu konepellin alla%install-osion jälkeen. Varmista, että kaikki ELF-binaarit (suoritettavat tiedostot, jaetut kirjastot, DSO:t) ovat suoritettavissa%install:n lopussa. -
find-debuginfo.shei käsittele setuid- tai setgid-binaaritiedostoja. Siitä on rpmbuildia vastaan jätetty bugi, mutta ennen kuin se on korjattu distroissa, joihin pakettisi on kohdistettu, varmista, että missään binaaritiedostoissasi ei ole setuid/setgid-bittejä%installlopussa ja palauta ne%files-osioon komennolla%attr(...) /path/to/file
Virheet, jotka ilmenevät odottamattoman pieninä *.debug debuginfo-paketissa ja/tai puuttuvat lähdetiedostot:
-
Paketti luotiin ilman
-g`välittämistä `gcctaig+`:lle. `-g+puuttuessa, debuginfo-pakettien tietoja ei luoda tai se ei on puutteellinen, varmista, että parametria käytetään. -
Huomaa, että jakelun oletusarvot
CFLAGSjaCXXFLAGSsisältävät jo-g, joten jos näitä lippuja käytetään, sen pitäisi olla jo käytössä. Jos ei, alioptimaaliset debuginfo-paketit eivät ole ainoa ongelma; paketti on luultavasti myös käännetty ilman viimeisimpien kääntäjäversioiden turvallisuutta parantavia vaihtoehtoja. Varmista, että arvo$RPM_OPT_FLAGSotetaan huomioon ja käytetään. -
strip -gkäytettiin binäärissä; katso ylläolevia mahdollisia korjaustoimenpiteitä.
Käyttökelvottomat tai epätäydelliset debuginfo-paketit johtuen muista syistä
Tyhjiä debuginfo-paketteja voi tulla myös tilanteissa, joissa ei ole ilmeisiä pakkausvirheitä. Joskus nämä johtuvat find-debuginfo.sh:n rajoituksista, joskus eivät. Muutamia tavallisia tapauksia:
-
Paketit, joiden ainoa arkkitehtuurista riippuvainen binääriosa on yksi tai useampi staattinen kirjasto
-
R- ja Mono-paketit TODO: R:n ja/tai Monon tuntevat ihmiset, tarkista nämä
Jos haluat poistaa käytöstä turhan debuginfo-paketin luomisen odottaessasi parannuksia tiedostoon find-debuginfo.sh tai jos on epätodennäköistä, että sitä voitaisiin parantaa tuottamaan pakettillesi hyvää debuginfoa (esimerkiksi ei arkkitehtuuririippuvaisia tiedostoja, mutta paketti ei ole noarch sen käyttämien asennuspolkujen takia), käytä %global debug_package %{nil} määritetiedostossa ja muista lisätä sen viereen kommentti, joka selittää, miksi se tehtiin.
Puuttuvat debuginfo-paketit
On normaalia, että noarch-pakettien koontiversiot eivät tuota debuginfo-pakettia. Jos se puuttuu muissa tapauksissa (jos sitä ei ole nimenomaisesti poistettu käytöstä), jokin on vialla. Yksi tällainen tapaus on puuttuva %build-osio, jossa on joitain rpmbuild-versioita.
Älä vanhenna debuginfo-paketteja
Jos alipaketti poistetaan tai alipaketti muutetaan archista noarchiksi, siihen liittyvä paketti -debuginfo saattaa jäädä taakse. Tämä saattaa olla ongelma, kun fedora-debuginfo -varasto on käytössä järjestelmän päivityksen aikana. Kuitenkin, koska debuginfo-paketeissa ei ole riippuvuuksia, ne ovat rinnakkain asennettavia ja hyödyllisiä coredump-analyysissä, älä vanhenna niitä missään.
Resurssit
-
debuginfo-pakettilistat Fedoralle koon mukaan lajiteltuina. Useimmat debuginfo-paketit, joiden koko on noin 20kB, ovat ehdokkaita, jotka kannattaa tutkia - kuitenkin huomattavasti suuremmat -debuginfo-paketit voivat kärsiä samoista ongelmista, esim. tapauksessa "puuttuva -g".
-
Huomaa, että jaetun ohjelmistolähteen vuoksi jokainen hakemisto on tutkittava erikseen.
-
-
rpmlint >= 0.77
Want to help? Learn how to contribute to Fedora Docs ›