2009-10-10 15 views
26

No puedo crear un minivolcado de mi proceso cambiando la configuración del sistema. Así que mi pregunta es :¿Cómo crear minivolcado para mi proceso cuando se bloquea?

  • ¿El sistema de crear un minidump para un proceso de usuario cuando se rompe

    En caso afirmativo, qué configuración necesito para configurar

  • O tengo que crear minivolcado programáticamente.

  • ¿Qué tan efectivos son minivolcados mientras investiga un accidente

estoy usando Windows XP, C++, VC6

+0

Siempre puede combinar try-catch y fstream para crear su propio minivolcado. –

Respuesta

25

Es necesario crear mediante programación un minidump (con una excepción, véase el siguiente enlace) . CodeProject tiene un bonito article on MiniDumps. Básicamente, desea usar dbghelp.dll, y usar la función MiniDumpWriteDump() (vea MSDN on MiniDumpWriteDump).

La eficacia de dichos vertederos depende en gran medida de la aplicación. A veces, para binarios optimizados, son prácticamente inútiles. Además, sin experiencia, los errores de corrupción de montón/pila te llevarán por mal camino.

Sin embargo, si el optimizador no era demasiado difícil para ti, hay una gran clase de errores en los vertederos hacen ayuda, es decir, todos los insectos en las que tener una pila-trace + los valores de las variables utilizadas a nivel local es útil , es decir, muchas llamadas puramente de función virtual (es decir, orden de destrucción incorrecta), violaciones de acceso (no accedidas o nulas verificaciones faltantes), etc.

Por cierto, si su política de mantenimiento lo permite, transfiera su aplicación de VC6 a algo aceptable, como VC8 o 9. Te harás un gran favor.

1

Si tiene unos pocos dólares de sobra, puede valer la pena echar un vistazo a AQtrace. Esto tiene muchas de las ventajas del bloqueo que ocurre dentro del depurador, mientras se ejecuta en una máquina de usuario final remota.

14

Gracias a todos por ver y responder gracias especiales a gimpf, busqué en Internet y msdn.

He encontrado un excelente artículo sobre debugInfo.com Esto vale la pena leer:

effective minidumps

+0

¿Te refieres a: googleado? –

+0

@MatthewRoh sí, corregido – Satbir

3

Utilizamos Google Breakpad en Firefox, aunque eso requiere, al menos, Visual C++ 2003. El buen beneficio adicional es que también es compatible con OS X y Linux.

2

Terminé usando CrashRpt en Windows (me requirieron mover toda la base de código y la cadena de herramientas de MinGW al compilador nativo de Microsoft C/C++) y google-breakpad en Linux.

Cuestiones relacionadas