[LUGOS-PROG] memory usage

Anze anze at volja.net
Mon Jan 17 18:30:19 CET 2005


Zivjo!

> fantje... valgrind

In iz drugega maila:

> lahko bi pa uporabil hans-boehm garbage collector za odkrivanje memory
> leakov.

Hvala obema, si bom zapomnil za kaksne prihodnje projekte - tukaj pa rabim 
samo nekega psa cuvaja, ki mi vrze alarm, ce je pri alociranju / dealociranju 
spomina prislo do napake. Dvomim, da bo do tega sploh prislo (ponavadi se mi 
to ne dogaja), ampak bolje biti opozorjen, kot pa da se samo sesuje sistem. 

Jezi me samo, da sem porabil kar nekaj ur, da sem nasel funkcijo, ki vrne 
kolicino alociranega spomina - no, vsaj tako, ki deluje... ;)

LP!

Anze


On Monday 17 January 2005 14:32, you wrote:
> fantje... valgrind
>
> instalirajte si valgrind in pustite, da to on opravi.
>
> ima vse zivo... leak detection (pove vam tocno v kateri vrstici ste
> alocirali tisto kar ste pozabili sprostiti), najde uporabo
> neinicializiranih spremenljivk, najde napacnih kombinacije new-delete
> new[]-delete[] in malloc-free , najde pisanje preko blokov, ki jih nisi
> alociral, ceprav samo za nekaj bajtov itd...
>
> ima se veliko drugih naprednih opcij, vse od samodejnega iskanja race
> conditionov (nisem porbal), do tega, da ti pove kako je z uporabo
> procesorjevega cacha (tudi nisem probal) ...
>
> valgrinda sem ogromno uporabljal in lahko rečem, da je fantastično
> orodje
>
> čao
> andraž
>
> On pon, 2005-01-17 at 14:26 +0100, Anze wrote:
> > Zivjo!
> >
> > Hvala za predlog!
> >
> > Nasel sem se dva nacina:
> >
> > - mallinfo
> >
> > - hooks:
> >
> > __malloc_hook points to a function to be called when the user calls
> > malloc(). You can do your own checks and accounting here, and then call
> > the real malloc() to get the memory that was requested.
> > __free_hook points to a function called instead of the standard free().
> >  __malloc_initialize_hook points to a function called when the memory
> > management system is initialized. This allows you to perform some
> > operations, say, setting the values of the previous hooks, before any
> > memory-related operation takes place.
> > Hooks also are available for other memory-related calls, including
> > realloc(), calloc() and so on.
> >
> > Ker mallinfo zadostuje za moje potrebe (in deluje, ravnokar sem
> > pretestiral), bom ostal kar pri tej resitvi.
> >
> > Hvala se enkrat in LP!
> >
> > Anze Skerlavaj
> >
> > On Monday 17 January 2005 13:55, you wrote:
> > > Za vsak (m/c/re)alloc povecas za 1 nek globalni stevec katerega z
> > > free-ji zmanjsas. Ce je na koncu ta stevec != 0 imas nekje memory leak.
> > > Kar ti pa razni lib-I allocirajo je pa itaq njihov problem ce puscajo
> > > leak-e za sabo. (z uporabo le teh seveda to postane tudi tvoj problem
> > > sam ne vem do katere mere lahko vplivas na to...?)
> > >
> > > Za uporabo pa ni tak zoprno ... (vsaj meni osebno)
> > > Ce naredis nekaj v smeri :
> > >
> > > #define ALLOC(ptr, cast, size)                                        
> > > \ do {
> > > \ ptr = (cast)XXXalloc((unsigned long)size);                           
> > >  \ printf("XXXalloced: %x at %x.\n", (int) size, (int) ptr);           
> > >   \ if (ptr == NULL) {                                                 
> > >    \ // report error
> > >     } else {
> > > \ memset( ptr, 0, size );                                            \
> > > mcount++;                                                          \ }
> > >                                                                 \ }
> > > while (0)
> > >
> > > #define FREEC(ptr)                                                    
> > > \ do {
> > > \ free(ptr);                                                           
> > > \ mcountc--;                                                           
> > >  \ printf("freed: %x.\n", (int) ptr);                                  
> > >  \ } while (0)
> > >
> > > Lp,
> > > Simon
> > >
> > > -----Original Message-----
> > > From: Anze [mailto:anze at volja.net]
> > > Sent: 17. januar 2005 13:37
> > > To: lugos-prog at lugos.si
> > > Subject: [LUGOS-PROG] memory usage
> > >
> > > Zivjo!
> > >
> > > V programu bi rad vedel, koliko spomina sem alociral. Gre predvsem za
> > > to, da
> > >
> > > bi rad, da mi program sporoca, ce sem kje pozabil klicati free() (ce se
> > > stevilo povecuje, imam nekje memory leak).
> > >
> > > Nasel sem tele opcije:
> > >  - getrusage, ampak izgleda, da v Linuxu ta funkcija ne vraca porabe
> > > spomina
> > >
> > > (vedno vraca 0).
> > >  - sysinfo() vraca samo celoten spomin na racunalniku,
> > >  - brk(0) (to je predlagal nekdo na comp.os.linux.development.system):
> > >
> > > The difference in return values of calls to brk(0) gives an indication
> > > of changes in the malloc() heap size, for common conditions [each
> > > allocation less than 128KB, ...] of GNU glibc usage. This does not
> > > count static areas of the main program, shared libraries, or modules
> > > loaded dynamically. It also does not count direct use of mmap().
> > > Other conditions and restrictions apply. But it might work
> > > well enough in many cases.
> > >
> > > Problem je samo v tem, da v "man 2 brk" ne pise nicesar, kar bi zgornji
> > > odstavek potrdilo.
> > >
> > > - namesto malloc / calloc / realloc / free lahko klicem svoje funkcije,
> > > ki stejejo porabo - vendar pa potem ne bom vedel, ce kje pozabim
> > > dealocirati spomin, ki ga alocira npr. libCurl ali libExpat, pa se
> > > zoprno je za uporabo
> > >
> > > - /proc - vendar pa je to tezje dobiti ven (parsati moram datoteko), pa
> > > se spremeni se lahko kadarkoli.
> > >
> > > - ps in parsanje izhoda - glej prejsnjo tocko. :)
> > >
> > > Zanima me, ali sem zgresil kaksno bolj preprosto opcijo? Sigurno nisem
> > > prvi,
> > >
> > > ki dela nekaj podobnega... ;)
> > >
> > > LP!
> > >
> > > Anze
> > > _______________________________________________
> > > lugos-prog mailing list
> > > lugos-prog at lugos.si
> > > http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-prog
> > > _______________________________________________
> > > lugos-prog mailing list
> > > lugos-prog at lugos.si
> > > http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-prog
> >
> > _______________________________________________
> > lugos-prog mailing list
> > lugos-prog at lugos.si
> > http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-prog
>
> _______________________________________________
> lugos-prog mailing list
> lugos-prog at lugos.si
> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-prog


More information about the lugos-prog mailing list