Tengo un programa C ++ que hace lo que se supone que debe hacer, pero debe haber algún problema con el puntero, ya que se bloquea al final y crea un volcado del núcleo. Mi problema es que no puedo encontrar el archivo principal, por lo que no puedo depurarlo.
Yo he tratado
ulimit -c unlimited
ulimit -a
y ahora la dimensión del archivo está establecida en ilimitada, pero aún no puedo encontrar el núcleo. He intentado en todas las carpetas escritas aquí, pero todavía parece que no se crea ningún archivo central.
¿Dónde puedo encontrarlo?
/var/crash
/var/log/apport.log
, porque las versiones modernas de Ubuntu usan Apport, que puede interferir con el volcado del núcleo de maneras no obvias. Consulte stackoverflow.com/a/18368068/1772379 para obtener más información.Respuestas:
En Ubuntu, los volcados del núcleo son manejados por Apport y pueden ubicarse en
/var/crash/
. Pero está deshabilitado de forma predeterminada en las versiones estables.Para habilitar Apport, ejecute:
sudo systemctl enable apport.service
osudo service apport start
.Para deshabilitar, ejecute:
sudo systemctl disable apport.service
osudo service apport stop
para volver al método de volcado de núcleo normal. Consulte: ¿Cómo habilito o deshabilito Apport? .Para deshabilitar permanentemente, edite el
/etc/apport/crashdb.conf
archivo y comente la siguiente línea:agregando un símbolo hash (
#
) al comienzo de la línea.Para deshabilitar los informes de fallos (volver a la normalidad), elimine el símbolo de hash (igual que antes).
También puede verificar
core_pattern
cómo el núcleo maneja los volcados de núcleo:Por lo tanto, incluso los archivos principales están deshabilitados por
ulimit
,apport
todavía capturarán el bloqueo.Ver también:
fuente
Para esos googlin ': (en mi caso, Ubuntu 16.04 y 18.04 y una aplicación personalizada)
/var/crash
todavía estaba vacío, por lo que era una forma rápida de manejar la creación del núcleo (siempre que esté, por ejemplo, utilizando una configuración incorporada de ulimit relevante )y
Fuentes:
fuente