Gå til innhold

Kan jeg finne en minnelekkasje i et program?


Anbefalte innlegg

Jeg har et spesiallaget jobbprogram med videobehandling for firmaet jeg tar oppdrag fra som kjører på to maskiner (én av gangen, for det krever en dongel, og de interne utviklerne i firmaet er noen store rasshøl som driter fullstendig i brukerken, bare at de kan pushe ut nye versjoner som begrenser oss enda mer i jobben - og ikke tro jeg overdriver, ble det laget en komiserei som handlet om intriger på kontorene her, ville den blitt slaktet som altfor urealistisk!), og på den ene maskinen har det en minnelekkasje som gjør at programmet må startes om igjen med jevne mellomrom. Det skjer ikke på den andre pc-en. Det som gjør dette så utrolig merkelig er at pc-ene er maskinvaremessig identiske og programvaremessig nesten identiske. Likevel skjer det altså bare på den ene pc-en. Fins det noe program som er i stand til å vise om denne lekkasjen kan komme fra en driver eller lignende som programmet er avhengig av? Det må altså være noe som kan finne lekkasjen uten å ha tilgang til koden, for den er så kryptert og beskyttet at man skulle tro det var NSAs operativsystem!

Lenke til kommentar
Videoannonse
Annonse

Greit, takk. Da slipper jeg å kaste bort tiden på å lure. Og niks, ikke hvis jeg vil beholde en godt betalt jobb som er veldig grei på de aller fleste andre måter. Det er det eneste firmaet i Norge som driver med akkurat dette (og mer sier jeg ikke, da kan det bli for lett å finne ut hva det er...).

Lenke til kommentar

Har du prøvd programpakken fra Sysinternals? Den er MEGET omfattende, og jeg er ganske sikker på at du ved hjelp av den pakken kan finne ut nøyaktig hva som forårsaker din minnelekkasje. Desverre har jeg minimal kunnskap om den pakken og vil være til lite hjelp. Men jeg vil tro det finnes en hel del informasjon på Google.

 

Når jeg åpner Process Explorer (en del av programpakken fra Sysinternals) på min maskin så ser jeg f.eks at prosessen AdAppMgrSvc.exe bruker 12.236KB ram, og dette brukes på fem tråder med navngitte filer, ei exe fil og fire dll filer.

 

Link for nedlasting: https://technet.microsoft.com/en-us/sysinternals/bb545021.aspx

 

Vær oppmerksom på at hvis du kjører Process Monitor så logger den kolossalt med data. Det fant jeg ut da jeg hadde latt det programmet kjøre en time eller tre da jeg plutselig fikk jeg advarsel om at SSD-en hadde lite ledig plass. Jeg fant ei loggfil på over 100GB! som det programmet hadde produsert på noen få timer.

Endret av SteinarN
Lenke til kommentar

Debugging av programmer, prosesser er nærmest et eget fag så jeg ville nok heller ha sett etter andre muligheter. Reinstallere maskinen med problemet eller klone disken på den friske maskinen (hvis ikke de er i et Windows domene.)

 

Hvis du likevel vil prøve deg med debugging, se f. eks. artikler om Perfmon, Windows Debugger. Eksempel på Google-søk: http://www.google.no/search?q=Windows+debugger+find+memory+leak&oq=Windows+debugger+find+memory+leak&gs_l=mobile-heirloom-serp.12..0i22i30l3.1605.19653.0.22796.40.29.5.6.6.0.351.6195.0j12j14j3.29.0....0...1c.1.34.mobile-heirloom-serp..14.26.4765.yRpnkZB_43w

 

Verktøyene fra SystemInternals (eid av Microsoft) som er nevnt over er også nyttige.

Lenke til kommentar

Avhengig av hvor mye tid han mister på programvare som hele tiden må startes på nytt...

 

Uansett kan en minnetest av den maskinen være aktuell , last ned memtest86 og kjør denne ved oppstart ( vil da kreve en god stund så kan være denne må kjøres om natten mens maskinen ikke er i bruk).

Lenke til kommentar

Avhengig av hvor mye tid han mister på programvare som hele tiden må startes på nytt...

Hvis du (og dere andre) ikke aner hva du prater om, hvorfor uttaler du/dere deg? De verktøyene er ikke i nærheten av hva han trenger for å finne en minnelekkasje, langt mindre fikse den.

 

 

 

last ned memtest86
Nei, nei, nei, nei, nei. Det fungerer ikke sånn i det hele tatt. Memtest sjekker om det er noe i veien med hardware. En minnelekkasje er en logisk feil i programkoden som gjør at programmet ikke rydder opp etter seg. Det har ingenting med hverandre å gjøre annet enn ordet "minne". Nå kaster du i hvert fall bort tiden hans.

 

En minnelekkasje består i at programmet bruker mer og mer minne (ses i task manager) dess lenger det kjører på grunn av en tankefeil hos de som har laget programmet. For å fikse på det må man endre på programmet, og da trenger man kildekoden, som kun utviklerne har, og så trenger man å være flinkere enn utviklerne til å finne feil.

Lenke til kommentar

 

Er det virkelig det?
Ja.

 

 

 

2 identiske oppsett
Tydeligvis ikke.

 

 

Les deg opp på førstepost : "Det som gjør dette så utrolig merkelig er at pc-ene er maskinvaremessig identiske og programvaremessig nesten identiske."

 

Om det viser seg at det er noe så enkelt som en minnebrikke som ikke sitter ordentlig i eller gir feil innimellom så kan dette kanskje påpekes med en minnetest. 

Lenke til kommentar
Om det viser seg at det er noe så enkelt som en minnebrikke som ikke sitter ordentlig i eller gir feil innimellom så kan dette kanskje påpekes med en minnetest.

Kan du forklare meg hva du tror en minnelekkasje er, så vi snakker om det samme? Minnefeil vil ikke gi minnelekkasje som symptom.

 

Les deg opp på førstepost : "Det som gjør dette så utrolig merkelig er at pc-ene er maskinvaremessig identiske og programvaremessig nesten identiske."

Stikkordene her er "programvaremessig nesten".

Endret av Emancipate
Lenke til kommentar

Minnelekasje er når et program stadig vekk bruker mer og mer minne og det ikke ordnes ved å avslutte programmet , er som regel forårsaket av elendig koding og kan være vrient å finne ut av.

 

Når det er sagt så kan ustabil hardware i noen tilfeller gi samme symptomer som minnelekasje , ikke så ofte det skjer , men er det enkelt å utelukke så hvorfor ikke ta en slik test?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...