Dump de memoria de otro proceso
Horst von Brand
vonbrand en inf.utfsm.cl
Mar Ago 23 22:24:09 CLT 2005
Bernardo Suarez <bsuarez en gmail.com> wrote:
> Tengo un set de programas en perl que corren como daemon en un
> sistema, que fueron creados ordenadamente via packages, lo que no está
> en clases está en funciones, etc.
Te saco el sombrero.
> Se supone que perl realiza garbage collection, pero veo que la memoria
> virtual usada por los programas siempre aumenta, hasta dejarme sin
> memoria.
Ojo, reusa la memoria de objetos que son inalcanzables. Si creas hashes y
metes cosas y cosas y cosas alli, tarde o temprano cualquier cosa rebalsa.
Tienes que deshacerte de los hashes (dejar el ambito que define el hash,
pero ojo que pueden quedar referencias dando vueltas...). Y/o preocuparte
de liberar los objetos contenidos (asignando undef a los elementos que ya
no uses).
> Seguramente el problema está en una de las clases que son comunes a los
> programas (o programé particularmente mal en esa epoca) pero llevo harto
> tiempo sin encontrar la falla. Por lo tanto me ayudarÃa mucho alguna
> utilidad que me permita hacer un dump hexadecimal de la memoria usada por
> otro proceso. Como no he podido detectar que parte del programa se come
> la memoria, quizas sea una buena pista saber con que la estoy
> llenando... Alguien tiene/conoce/sabe como hacer algo asÃ?
Puedes attacharte a un proceso con gdb(1), y de alli controlarlo. O matarlo
via alguna sen~al que genere un core (signal(7)). Supongo que tontear con
lo contenido en /proc puede servir...
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria +56 32 654239
Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513
Más información sobre la lista de distribución Linux