2008-09-18 12 views

Respuesta

8

Este post debe empezar en los diversos options..Check los artículos etiquetados con depuración ..

Otro artículo útil sobre debugging deadlocks ..

0

¿Qué idioma/IDE estás usando?

En .Net puede ver los hilos de una aplicación: Depuración> Windows-> Hilos o Ctrl + Alt + H

0

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().

4

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.

-1

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.

1

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.

Cuestiones relacionadas