2010-10-16 17 views
17

Estoy intentando depurar un error de segmentación causado por mi programa C usando gdb. Un archivo de vaciado no se genera automáticamente cuando corro mi programa, y ​​tengo que ejecutar el comandoArchivo de volcado del núcleo no generado en el error de segmentación

ulimit -c unlimited 

para un archivo central que se generen en la próxima ejecución.

¿Por qué un archivo de volcado del núcleo no se genera automáticamente y por qué tengo que ejecutar el comando ulimit cada vez para generar un archivo central en la próxima ejecución de mi programa?

El sistema operativo que uso es Ubuntu 10.10.

Respuesta

18

Es necesario colocar el comando

ulimit -c unlimited 

en la configuración del entorno.

Si está usando bash como shell, es necesario colocar el comando anterior en ~/.bashrc

9

Eso es porque de forma predeterminada su distribución limita el tamaño del archivo del núcleo a 0 bloques. El comando ulimit que mencionaste aumenta ese límite al infinito.

No sé acerca de Ubuntu, pero la mayoría de las distribuciones tienen un archivo/etc/limits con los valores predeterminados del sistema para los límites de recursos.

15

También puede ser que desee para tratar de editar /etc/security/limits.conf archivo en lugar de añadir a ulimit -c unlimited~/.bashrc.

El limits.conf es el lugar "correcto" donde especificar los detalles del volcado del núcleo en la mayoría de las distribuciones de Linux.

1

La falla de segmentación se debe a valores irrelevantes para variables de ruta. En mi sistema, el usuario es [email protected] 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 

Consulte this blog post (muy importante).

Cuestiones relacionadas