Editar

Compartir a través de


Preguntas más frecuentes sobre volcados de memoria

En este artículo se responde a las preguntas más frecuentes sobre la recopilación de volcados de memoria en .NET.

¿Por qué solo obtengo volcados de memoria en Linux si [dotnet-dump](dotnet-dump.md) o mi [proceso de bloqueo](dumps.md#collect-dumps-on-crash) se ejecuta con privilegios elevados?

En sistemas basados en Linux, /proc/sys/kernel/ptrace_scope controla quién puede llamar a ptrace y de qué procesos pueden realizar un seguimiento. Se recomienda establecer este valor en 1, lo que significa que solo los procesos de la misma cadena de linaje pueden usar seguimiento. Cualquier valor mayor que este requiere elevación de privilegios o podría deshabilitar ptrace por completo.

¿Por qué no puedo recopilar volcados de memoria al ejecutarse dentro de un contenedor?

En el caso de las aplicaciones que se ejecutan en cualquier tecnología de Open Container Initiative, el perfil seccomp debe permitir llamadas a ptrace. Por ejemplo, Docker usa containerd no de forma obvia como entorno de ejecución de contenedor. Al inicializar el entorno de ejecución, especifica un perfil de seccomp predeterminado que solo permite ptrace si el host de contenedor tiene una versión de kernel superior a 4.8 o si se especificó la funcionalidad CAP_SYS_PTRACE.

¿Por qué no puedo recopilar volcados de memoria en macOS?

En macOS, el uso de ptrace requiere que el host del proceso de destino tenga los derechos necesarios. Para información sobre los derechos mínimos necesarios, consulte Derechos predeterminados.

¿Dónde puedo obtener más información sobre cómo puedo aprovechar los volcados de memoria para ayudar a diagnosticar problemas en mi aplicación .NET?

Cómo puedo resolver el error "No se ha podido encontrar ninguna versión de Framework compatible"

En Linux, la variable de entorno DOTNET_ROOT debe apuntar a la carpeta correcta cuando se establece. Cuando apunta a otra versión de .NET, dotnet-dump siempre genera este error. Cuando no se establece la variable de entorno DOTNET_ROOT, se produce un error diferente ("Debe instalar .NET para ejecutar esta aplicación").