¿Hay alguna forma de localizar qué parte del proceso utilizó la mayor parte de la memoria, solo mirando un archivo núcleo generado?

Tengo un proceso (que es iniciado por un perro guardián cada vez, se detiene por alguna razón), que generalmente usa aproximadamente 200 MB de memoria. Una vez que vi que está consumiendo la memoria, con un uso de memoria de aproximadamente 1.5-2 GB, lo que definitivamente significa una "pérdida de memoria" en alguna parte ("pérdida de memoria" entre comillas, ya que no es una pérdida de memoria real, como la memoria asignada, nunca se libera e inalcanzable - tenga en cuenta quesolo se utilizan punteros inteligentes. Entonces, pienso en algún contenedor enorme (no encontré) o algo así)

Más tarde, el proceso se bloqueó, debido al alto uso de memoria y se generó un volcado del núcleo, alrededor de 2 GB. Pero el problema es que no puedo reproducir el problema, entoncesvalgrind no ayudará aquí (supongo). Sucede muy raramente y no puedo "atraparlo".

Entonces, mi pregunta es: ¿hay alguna forma, utilizando el archivo exe y el archivo central, para localizar qué parte del proceso ha utilizado la mayor parte de la memoria?

Eché un vistazo al archivo principal congdb, no hay nada inusual. Pero el núcleo es grande, por lo que debe haber algo. ¿Hay una manera inteligente de entender lo que sucedió, o solo adivinar puede ayudar (pero para un gran ejemplo ..., 12 hilos, aproximadamente 50-100 (puede haber más) clases, etc., etc.)

Es unC++ aplicación, ejecutándose en RHEL5U3.

Respuestas a la pregunta(8)

Su respuesta a la pregunta