Hvordan å feilsøke minnefeil Problemer på Win32

Hvordan å feilsøke minnefeil Problemer på Win32


Minne korrupsjon i programvaren kan være svært frustrerende å feilsøke. Det hjelper, men å forstå hva som forårsaker minnekorrupsjon og hvordan du skal gå om å fikse det. Minne kan bli ødelagt av en bufferoverløp, ved hjelp initialisert minne, eller prøver å lese fra eller skrive til ugyldig minne. Programmereren må finne kilden til problemet og fikse det.

Bruksanvisning

1 Reduser ditt søk. Det er et tegn på at du er på vei i riktig retning hvis du ikke klarer å reprodusere feilen når en del av koden er forhindret fra å kjøre. Hvis du bruker Visual C ++, kan debugger hjelpe deg gå gjennom koden for å finne hvor korrupsjon skjer.

2 Gre gjennom kildekoden. Når du har snevret ned problemet til en mindre del av koden, må du gå gjennom den og sørge for at alt minnet leser og skriver bruke gyldig minne. Utgang debugging setninger ved hjelp av funksjoner som OutputDebugString å sørge for at minneverdier er gyldige. Kontroller at matrise grensene overholdes og at minnet er initialisert og ikke satt til null eller slettes før bruk.

3 Fiks problemet. Når du har funnet problemet, eliminere den. Hvis det er en fremmed deallokering minne, bare å fjerne den linjen med kode. Sørg for at alle matriser brukes kun innenfor sine grenser, og at all direkte tilgang til minnet er initialisert før bruk.

4 Hindre at problemet oppstå igjen. Noen ganger bruker minnebehandling, slik at alle minne bevilgninger og deallocations har et felles grensesnitt kan hjelpe deg å eliminere minne korrupsjon feil. Det kan være lurt å sjekke hver matrise lese eller skrive, slik at du kan garantere at det er innenfor grensene.

Hint

  • Vurdere å prøve en tredjepart minne debugger, slik som WinDbg eller Purify, som legger til programmet, og gir ekstra minne diagnostikk.