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();
}