¿Cuáles son los pasos y las técnicas para depurar un aparente bloqueo debido a un interbloqueo en un proceso de producción de Win32. Escuché que WinDbg se puede usar para este propósito, pero ¿podrías darnos indicios claros de cómo lograrlo?Diagnóstico de interbloqueos en el programa Win32
Respuesta
Este post debe empezar en los diversos options..Check los artículos etiquetados con depuración ..
Otro artículo útil sobre debugging deadlocks ..
¿Qué idioma/IDE estás usando?
En .Net puede ver los hilos de una aplicación: Depuración> Windows-> Hilos o Ctrl + Alt + H
callejones sin salida de depuración puede ser complicado. Normalmente hago algún tipo de registro y veo dónde se detiene el registro. Puedo iniciar sesión en un archivo o en la consola de depuración utilizando OutputDebugString().
La depuración de un punto muerto real es realmente fácil, si tiene acceso a la fuente y un volcado de memoria (o una sesión de depuración en vivo).
Todo lo que debes hacer es mirar los hilos, y encontrar los que están esperando en algún tipo de recurso compartido (por ejemplo colgado esperando en WaitForSingleObject
). En general, a partir de ahí, es cuestión de averiguar qué dos o más hilos se han bloqueado entre sí, y luego solo tienes que averiguar cuál rompió la jerarquía de bloqueo.
Si no puede determinar fácilmente qué subprocesos están bloqueados, utilice el método que se muestra en this post here para rastrear la cadena de bloqueo de cada subproceso. Cuando ingresas en un bucle, los hilos en el bucle son los que están en punto muerto.
Lo mejor es comenzar agregando declaraciones de registro. En general, recomendaría solo alrededor de los recursos compartidos que son deadlock pero también agregarlos en general podría apuntar a situaciones o áreas de código que no esperabas. ¡El tan publicitado problema de la base de datos stackoverflow.com realmente resultó ser log4net! El equipo de stackoverflow nunca sospechó de log4net, y solo al examinar el registro (irónicamente) lo mostró. Inicialmente renunciaría a cualquier herramienta complicada, como WinDgb, ya que su uso no es muy intuitivo en mi humilde opinión.
Si es muy flojo, puede instalar el Verificador de aplicación, luego agregar su módulo y seleccionar solo "bloqueos" de la prueba básica. luego puede ejecutar su aplicación bajo cualquier depurador.
si un punto muerto de la sección crítica le sucede con encontrar el motivo de inmediato.
- 1. Diseño en el programa GUI de Win32
- 2. Historial de interbloqueos en Oracle?
- 3. interbloqueos en MySQL filas eliminación
- 4. Diagnóstico de paradas IIS
- 5. Transacciones - ¿Cómo evitar interbloqueos?
- 6. cómo ver el diagnóstico de azul Log
- 7. ¿Cómo evitar interbloqueos?
- 8. Desafío de aprendizaje automático: programa de diagnóstico en java/groovy (datamining, machine learning)
- 9. .net ¿Mejores prácticas de diagnóstico?
- 10. Cómo detectar interbloqueos en Mysql/innodb?
- 11. ¿Cuál es la diferencia entre la prevención de interbloqueos y la prevención de interbloqueos?
- 12. Incrustación de Python con subprocesos, ¿evitando interbloqueos?
- 13. ORM Soporte para la manipulación de interbloqueos
- 14. Pruebas unitarias, interbloqueos y condiciones de carrera
- 15. Rastreo y diagnóstico para System.Data.SQLConnection
- 16. Activar el diagnóstico en Azure consume transacciones: MACommand.xml
- 17. Diagnóstico de manifiestos de aplicación de Windows
- 18. No puedo iniciar el Monitor de diagnóstico de Azure
- 19. descarga registros de diagnóstico de azul?
- 20. Cuándo usar 'contexto de diagnóstico anidado' (NDC)?
- 21. Diagnóstico de .NET OutOfMemoryException al generar informes
- 22. Azure: ¿Cómo crear WADLogsTable para capturar el código de diagnóstico?
- 23. Problema de consola Win32
- 24. herramientas de rendimiento y diagnóstico para Silverlight
- 25. Salida de conjunto de GCC de un programa vacío en x86, win32
- 26. Pregunta sobre IsDialogMessage() en WIN32
- 27. ¿Mensajes de error de diagnóstico más precisos con plantillas?
- 28. ¿Cómo podemos verificar si un archivo existe o no con el programa Win32?
- 29. Cualquier progreso en el diagnóstico de "solicitud agotó el tiempo de espera" HttpExceptions?
- 30. Diagnóstico de errores 404 en IIS 7 y ASP.NET MVC