tecnica - El archivo de volcado del núcleo no se genera en la falla de segmentación
tecnica de paginacion de memoria (4)
Estoy intentando depurar un error de segmentación causado por mi programa C usando gdb
. Un archivo de volcado de núcleo no se genera automáticamente cuando ejecuto mi programa, y tengo que ejecutar el comando
ulimit -c unlimited
para que se genere un archivo central en la siguiente ejecución.
¿Por qué un archivo de volcado del núcleo no se genera automáticamente y por qué tengo que ejecutar el ulimit
cada vez para generar un archivo del núcleo en la próxima ejecución de mi programa?
El sistema operativo que uso es Ubuntu 10.10.
El error de segmentación se debe a valores irrelevantes para las variables de ruta. En mi sistema, el usuario es sidd@sidd-Lenovo-G460
y los contenidos agregados son los siguientes.
PATH=$PATH:/home/sidd/ns-allinone-2.35/bin:/home/sidd/ns-allinone-2.35/tcl8.5.10/unix:/home/sidd/ns-allinone-2.35/tk8.5.10/unix
LD_LIBRARY_PATH=/home/sidd/ns-allinone-2.35/otcl-1.14:/home/sidd/ns-allinone-2.35/lib
TCL_LIBRARY=/home/sidd/ns-allinone-2.35/tcl8.5.10/library
Por favor refiérase a esta entrada de blog (MUY IMPORTANTE).
Esto se debe a que, de forma predeterminada, su distribución limita el tamaño del archivo principal a 0 bloques. El ulimit
que mencionaste aumenta ese límite hasta el infinito.
No sé sobre Ubuntu, pero la mayoría de las distribuciones tienen un archivo / etc / limits con valores predeterminados del sistema para los límites de recursos.
Necesitas colocar el comando.
ulimit -c unlimited
en la configuración de su entorno.
Si está utilizando bash como su shell, debe colocar el comando anterior en ~ / .bashrc
También puede intentar editar el archivo /etc/security/limits.conf
lugar de agregar ulimit -c unlimited
a ~/.bashrc
.
limits.conf
es el lugar "correcto" donde se especifican los detalles del volcado de limits.conf
en la mayoría de las distribuciones de Linux.