windows crash-reports crash-dumps windows-error-reporting

Windows no produce volcados de memoria completos aunque el registro esté configurado correctamente



crash-reports crash-dumps (1)

Mi cliente está experimentando fallas de software con un programa VB6 que escribí.

Había configurado el registro para producir volcados de memoria completos, y vi que funcionaba correctamente con otros programas que fallaban en su sistema, pero por alguna razón, para mi programa, todavía crea volcados de memoria simples en un directorio totalmente diferente.

Mi programa se ejecuta en una computadora x64 de 32 bits. He configurado el registro como se muestra en la imagen, tanto para SOFTWARE / Microsoft como para SOFTWARE / Wow6432Node / Microsoft.

Aún no funciona.

¿Alguien sabe cómo puedo estar seguro de que se producen volcados de memoria cada vez que el programa falla?


Permisos de la carpeta para escribir

Mirando los permisos de la carpeta C:/ProgramData/Microsoft/Windows/WER que tiene

  • Leer y ejecutar
  • Lista de contenidos en la carpeta
  • Leer

Crear una subcarpeta LocalDumps heredará los permisos.

Por lo tanto, debe modificar los permisos de esa carpeta o usar una carpeta diferente con permisos de escritura.

Permisos de la clave de registro

Es posible que Windows no pueda leer la configuración del Registro si los permisos no lo permiten. Por ejemplo, los siguientes permisos (realmente tontos) también evitarán un LocalDump:

32 contra 64 bits

Windows Error Reporting es ejecutado por Windows y solo usa la clave de registro con el bit del sistema operativo. Dijiste que configuraste ambos. Si eso es cierto, está bien. Si solo configura la clave de registro de 32 bits, no funcionará.

AeDebug

Si tiene una configuración para AeDebug HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug , se ejecutarán antes de WER.

Tenga en cuenta que esta entrada puede existir en 32 bits (WOW6432Node) y 64 bits.

Por lo general, eso debería resultar en iniciar un depurador, pero quién sabe ... podría no hacer nada y simplemente salir.

LocalDumps está deshabilitado

Asegúrese de que no haya DWORD Disabled con un valor de 1 en HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/Windows Error Reporting/LocalDumps

Uso de REG_SZ en lugar de REG_EXPAND_SZ

He visto personas que usan un REG_SZ para DumpFolder en combinación con %APPDATA% . Solo REG_EXPAND_SZ expandirá las variables de entorno.

Alguien cancela la generación de volcado de memoria

Si el cuadro de diálogo WER está habilitado, alguien puede presionar el botón cancelar.

Establezca DWORD DontShowUI en 1 para deshabilitar el diálogo.

Configuraciones de usuario en lugar de configuraciones de máquina

Ahí está la configuración de la máquina.

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Windows Error Reporting

pero también configuraciones definidas por el usuario en

HKEY_CURRENT_USER/Software/Microsoft/Windows/Windows Error Reporting

Quizás los valores de la máquina sean sobrescritos por la configuración del usuario.

Prueba antes de usarlo

Para probar si su configuración funciona, puede probar con un pequeño programa C ++.

#include "stdafx.h" #include <exception> int _tmain(int /*argc*/, _TCHAR* /*argv*/[]) { throw std::exception(); }