Pregunta

Después de esta pregunta:
Bueno informes de bloqueo de la biblioteca en c#

Hay alguna librería como CrashRpt.dll que hace lo mismo en Linux?Esto es, generar un informe de error, incluyendo un volcado de núcleo y cualquier ambiente necesario y notificar a los desarrolladores acerca de él?

Editar:Este parece ser un duplicado de esta pregunta

¿Fue útil?

Otros consejos

Compilar el código con los símbolos de depuración, escriba sin límite de coredumpsize en su concha y se obtendrá un coredump en la misma carpeta que el archivo binario.El uso de gdb/ddd - abrir el programa en primer lugar y, a continuación, abra el volcado de núcleo.Usted puede comprobar este para obtener información adicional.

@Ionut
Se encarga de generar el volcado de núcleo, pero no puede gestionar notificar al desarrollador cuando otros usuarios tenido accidentes.

Nathan, bajo qué circunstancias, en un segmento de la base de que no sea cero?Nunca he visto que se producen en mis 5 años de Linux desarrollo de aplicaciones.

Gracias.

@Martin

Yo validación de la arquitectura x86, así que estoy muy familiarizado con la arquitectura del procesador, pero muy onufamiliarizado con la forma en que se usa.Eso es lo que he basado mi comentario.Si CR2 se puede contar para dar la respuesta correcta, entonces acepto la corrección.

Nathan, yo no estaba insistiendo en que eran incorrectas;Sólo estaba diciendo que en mi (limitada) de la experiencia con Linux, la base de los segmentos es siempre cero.Tal vez esa es una buena pregunta para preguntar...

Nota:hay dos interesantes registra en un x86 seg-fallo de bloqueo.

La primera, EIP, especifica el código de la dirección en que se produjo la excepción.En RichQ la respuesta, él utiliza addr2line para mostrar el origen de la línea que corresponde a la caída de dirección.Pero EIP puede ser inválida;si usted llama a un puntero a función que es nulo, puede ser 0x00000000, y si corromper la pila de llamadas, el retorno de los pop cualquier valor aleatorio en el PAE.

La segunda, CR2, especifica los datos de la dirección que causó el fallo de segmentación.En RichQ del ejemplo, se está configurando como un puntero nulo, luego de acceder a él.En este caso, CR2 sería 0x00000000.Pero si usted cambia:

int j = *i

a:

int j = i[2];

Entonces usted está tratando de acceder a la dirección 0x00000008, y eso es lo que se encontró en CR2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top