Primeiro, você executa essa saída por meio de c++filt , que organiza os símbolos C ++ em uma saída legível por código de origem e capaz de referência cruzada.
A partir disso, você vê que o construtor PROFILE chamou new[] , o que causou uma exceção para a qual não há manipulador (std :: terminate é chamado), o que faz com que o programa seja abortado, gerando um dump de núcleo .
Você pode envolver a chamada em new[] em um bloco try...catch para ver qual é a exceção. Não consigo me lembrar de todas as exceções que new[] pode levantar e sob quais circunstâncias, mas uma causa de new falhas é um heap corrompido, geralmente sobrescrevendo os limites de uma alocação ou um duplo delete .
Você pode diagnosticar esses erros de memória usando programas como valgrind (livre) ou purify (comercial, supondo que ele ainda exista - usei-o pela última vez há 15 anos). valgrind seria um bom começo e mostrará seus erros de memória no formulário mencionado acima.
Você pode ir mais fundo com o dump principal usando gdb para inspecionar a imagem da memória do seu programa no momento em que ele falhou, mas ninguém aqui pode realmente ajudar com isso - você precisa conhecer a estrutura do seu código e o layout de memória esperado para fazer muito com isso.