PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm um speicherüberlauf von code sichtbar zu machen



Mat
29-09-2006, 18:27
Hallo,

bei einem bibliotheksaufruf tritt evtl. ein speicherüberlauf bei mir auf...
gibt es ein tool dass mir das anzeigt unter linux? (Debian) ?

Danke euch für Hilfe

peschmae
30-09-2006, 00:09
Überlauf von was wo? Valgrind? Electric Fence? Gdb? Auf jeden Fall sind das die Tools die mir beim Wort Speicher in den Sinn kommen ;)
Ich verstehe nicht genau woraus du hinaus willst.

MfG Peschmä

Keeper
30-09-2006, 11:56
Vermutlich meint er einen Buffer Overflow und sucht ein Debug Tool, dass seine Buffer kontrollieren und einen Overflow feststellen kann.
Kann hier aber selber leider nicht weiterhelfen.

Mat
01-10-2006, 20:47
sorry für meine unverständliche frage...
ja ich meine einen buffer overflow...
ich rufe mittels C++ eine fortran bibliotheksfunkion auf die auf einem meiner vektoren operiert und seltsamerweise verändert sie mancham in einem ganz anderen vektor mit dem die funktion rein gar nichts zu tun hat die ersten werte...

wenn ich vor den aufruf folgendes schreibe:



for(int t = 0; t < 100; t++)
mein_vector.push_back(t);
mein_vector.clear();


dann werden die werte nicht verändert...ich habe also einfach nur mal kurz speicher alloziiert und wieder freigegeben....
aber das ist ja keinerlei bestätigung dass die fortran-funktion einen overflow generiert...ist nur alles sehr seltsam :o
Ich habe es wirklich so eingegrenzt dass ich vor und nach dem funktionsaufruf den vektor ausgebe...eben die veränderung ist so strange....

Jetzt weiß ich dass unter Borland C++ so tools wie memproof oder codeguard gibt...und würde gern wissen ob ich unter linux (debian) auch ne möglichkeit habe......schaffe ich das auch mittels gdb ?

*grmpf

Danke

peschmae
01-10-2006, 22:21
Valgrind sollte da eigentlich passen. Das ist mittlerweile weit mehr als nur ein Memoryleak-Checker.

Allerdings hab ich mich da nie wirklich rein vertieft - viel Spass ;)

MfG Peschmä

nul
03-10-2006, 19:38
Da kann ich peschmae nur recht geben, valgrind ist wirklich ein feines tool. Du solltest dich aber nicht zu sehr von den Fehlermeldungen in den Bibliotheken kuemmern.
Dazu muesstest du dann selbst die Bibiotheken bearbeiten was etwas umstandlich ist.

Mat
03-10-2006, 20:39
vielen dank ,
ich will eigentlich nur herausfinden ob es wirklich ein buffer overflow ist...
leider finde ich kein passenden artikel der mir beschreibt wie ich mit valgrind das bewerkstelligen könnte
*grmpf

nul
03-10-2006, 22:50
valgrind
valgrind: Missing --tool option
Available tools:
massif
memcheck
none
addrcheck
corecheck
helgrind
lackey
cachegrind
valgrind: Use --help for more information.

Der aufruf erfogt dann mit:
valgrind --tool=memcheck ./a.out

Das tool kann natuerlich frei gewaehlt werden.