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 -s
taigcc -s
jne. ja poista ne (tai-s
-liput). Menetelmä tämän tekemiseen vaihtelee, jotkin esimerkkitapaukset sisältävät korjauksen käyttäen%configure
taimake
-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: noarch
puuttuu. Jos näin on, tee paketistanoarch
. -
find-debuginfo.sh
kä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.sh
ei 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ä%install
lopussa 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ä `+gcc
taig++
:lle.-g
puuttuessa, debuginfo-pakettien tietoja ei luoda tai se ei on puutteellinen, varmista, että parametria käytetään. -
Huomaa, että jakelun oletusarvot
CFLAGS
jaCXXFLAGS
sisä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_FLAGS
otetaan huomioon ja käytetään. -
strip -g
kä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 ›