2010-08-11 10 views
5

Normalmente cuando uso puntos de interrupción en Visual Studio (2008 en este ejemplo), simplemente veo una lista plana. A veces, sin embargo, obtengo una vista de árbol para cada punto de interrupción, como se muestra a continuación (hay 26 nodos secundarios del nodo expandido). Todos los nodos de árbol se refieren a la misma línea de código, y todas las columnas opcionales muestran los mismos datos para cada nodo. Supongo que posiblemente tengan algo que ver con los hilos, pero ¿de qué sirven estos y qué muestran realmente? Y si son de alguna utilidad, ¿cómo se supone que debes distinguir entre ellos?Ventana de puntos de ruptura de Visual Studio: ¿Qué muestra el TreeView?

Breakpoints window http://www.freeimagehosting.net/uploads/2244242173.png

+0

Por lo general, hay múltiples instancias del mismo código; iba a decir generalmente cuando tienes una clase base genérica, pero no puedo hacerlo por mí mismo ahora. O al menos esa fue la explicación cuando estaba programando con C++ y ATL. – Rup

Respuesta

4

En mi caso, parece estar relacionado con los dominios de aplicación en el proceso que se está depurando. Si adjunto WinDbg al proceso, cargo SOS.dll y ejecuto !DumpDomain, puedo ver 26 AppDomains, correspondientes a los 26 nodos de árbol en la pregunta. Sería bueno si hubiera una columna en la ventana de puntos de ruptura que distinguiría entre estos!

3

Estos se denominan puntos de interrupción secundarios, están escasamente documentados (1, 2) y en general son un poco problemáticos.

Empíricamente, para código nativo se forman los puntos de interrupción niño:

  1. Para funciones inline, instanciado varias veces,
  2. Para las funciones de plantilla, instanciado varias veces,
  3. En las bibliotecas estáticas que se enlaza contra múltiples DLL en el proceso depurado [es],
  4. Cada vez que el motor de depuración se siente aburrido. En serio, la mayoría de ellos parecen francamente falsos.
Cuestiones relacionadas