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 tai gcc -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 tai make-kohteelle, joka estää poistamisen , ja/tai strip-komennon ohittamisen, kuten esimerkiksi make 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.). Todelliset noarch-paketit eivät sisällä mitään, mitä rpmbuild voisi poistaa niistä, joten niiden odotetaan olevan tyhjiä, jos BuildArch: noarch puuttuu. Jos näin on, tee paketista noarch.

  • 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 tai g++:lle. -g puuttuessa, debuginfo-pakettien tietoja ei luoda tai se ei on puutteellinen, varmista, että parametria käytetään.

  • Huomaa, että jakelun oletusarvot CFLAGS ja CXXFLAGS 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