Mitä keinoja paikallistaa muistivuoto?

bugimetsästys

Tällaista mietin: On annettu joku ohjelma, vaikka less, lähdekoodeineen. Kun tuon ajaa, niin valgrind ilmoittaa:

valgrind less
==3536== Memcheck, a memory error detector
==3536== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==3536== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==3536== Command: less
==3536==
Missing filename ("less --help" for help)
==3536==
==3536== HEAP SUMMARY:
==3536== in use at exit: 17,749 bytes in 27 blocks
==3536== total heap usage: 89 allocs, 62 frees, 30,742 bytes allocated
==3536==
==3536== LEAK SUMMARY:
==3536== definitely lost: 0 bytes in 0 blocks
==3536== indirectly lost: 0 bytes in 0 blocks
==3536== possibly lost: 0 bytes in 0 blocks
==3536== still reachable: 17,749 bytes in 27 blocks
==3536== suppressed: 0 bytes in 0 blocks
==3536== Rerun with --leak-check=full to see details of leaked memory
==3536==
==3536== For counts of detected and suppressed errors, rerun with: -v
==3536== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Jos pomo sanoo, että nuo kaikki muistit pitää vapauttaa, niin millä ohjelmalla bugien paikka löytyy helpoimmin?

7

218

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Lisäksi

      Muistivuoto voi olla jossain ohjelman käyttämässä kirjastossa.

      • bugimetsästys

        Niin voi, mutta mitä keinoja tuollaisen etsimiseen on? Onko esimerkiksi työkalua, joka ilmoittaa funktion, jossa vuoto tapahtuu?


    • Epäselvää

      Ymmärtääkö pomosi jotain ohjelmien muistinhallinnasta?

      • bugimetsästys

        Mulla ei ole pomoa, mutta kuvittelin tilanteen, jollainen voi tulla vastaan ohjelmoijan uralla.


    • Schemer

      Katsoppa Valgrind ohjeet:

      http://valgrind.org/docs/manual/quick-start.html#quick-start.interpret

      Esimerkin lopussa kerrotaan että vapauttamaton/vuotanut muisti varattiin rivillä 5, filessä a.c. Se missä kohtaa koodia muistipointteri hukataan tai jätetään vapauttamatta pitää itse tutkia, eli pointteria voidaan kuljettaa ympäriu ohjelmaa, funktioista toiseen.

    • 88818181181881

      No, tehdään kuppoon erittäin mikroskooppisen pieniä reikiä, niitä ei saa nähdä paljaalla silmällä. Sen jälkeen kuppo aseteaan yöksi jääkaappiin. Seuraavana päivänä kuppo otetaan esille, yritetään muistaa mihin ne reijät tehtiin, nämä reijät rinkuloidaan tussilla. Sitten kuppo teytetään vedellä ja katsotaan muistettiinko oikein missä kohdin ne reijät on? Jos vesi vuotaa tussilla merkitystä kohdata, löydettiin muistivuoto.

    • diagnoosiehdotus

      Saattaa olla sellainen vika, että joku rutiini varaa aina vain uudestaan muistia ja jättää palauttamatta sen muistin, lataa aina vain uudestaan, katso sellaisia rutiineja, mitkä varaavat muistia toistuvasti, ja joista on unohtunut vapauttaa se muisti kun sitä on käytetty.

      Silloin se jää varaamaan muistia käyttämättömänä ja aina varautuu lisää, eli tsekkaat rutiinit joissa varataan muistia ja käydään toistuvasti.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mistä puhuitte viimeksi kun näitte

      Kerro yksi aiheista
      Ikävä
      107
      7803
    2. 116
      6115
    3. Se on hyvästi

      Toivottavasti ei tavata.
      Ikävä
      83
      5207
    4. Olenko saanut sinut koukkuun?

      Hyvä. Rakastan sua.
      Ikävä
      141
      4573
    5. Alavuden sairaala

      Säästääkö Alavuden sairaala sähkössä. Kävin Sunnuntaina vast. otolla. Odotushuone ja käytävä jolla lääkäri otti vastaan
      Ähtäri
      11
      3240
    6. Sisäsiittosuus

      Tämän kevään ylioppilaista 90% oli sama sukunimi?
      Suomussalmi
      62
      3044
    7. Miksi sä valitsit

      Juuri minut sieltä?
      Ikävä
      58
      2958
    8. Törkeää toimintaa

      Todella törkeitä kaheleita niitä on Ylivieskassakin. https://www.ess.fi/uutissuomalainen/8570818
      Ylivieska
      10
      2464
    9. Kerro nyt rehellisesti fiilikset?

      Rehellinem fiilis
      Suhteet
      61
      2447
    10. Hei........

      Pelkkä sun näkeminen saa mut hymyilemään pitkin iltaa. Oot niin 🤩😘 Edellinen poistettiin.
      Ikävä
      56
      2076
    Aihe