24

Aparentemente VS 2008 no permite establecer un punto de interrupción solo en el establecimiento de una propiedad automática.¿No se pueden establecer puntos de interrupción en un setter de propiedad automática? ¿Por qué?

I.e. Si defino un auto-propiedad como esta:

public int CurrentFramesize 
    { 
     get; 
     protected set; 
    } 

y luego tratar de establecer un punto de interrupción en la línea de la moda, el conjunto de auto-propiedad se vuelve punto de interrupción-rojo.

Esto funciona bien para las propiedades normales, así que ¿alguna idea de por qué las auto-propiedades obtienen este tratamiento especial (restrictivo)? ¿Son algo más que azúcar sintáctico para las propiedades normales con un campo de respaldo oculto?

+0

Estás en lo correcto. Noté lo mismo. –

+4

Respuesta de Microsoft http://connect.microsoft.com/VisualStudio/feedback/details/408762/unable-to-set-breakpoint-toc-c-autautom-property –

+1

Estaba desesperadamente esperando que esta característica se convirtiera en VS2010 :( – bitbonk

Respuesta

28

mediante Visual Studio 2008, 2010, 2012:

  1. Ir a la ventana de punto de interrupción
  2. Nuevo-> Rotura en la Función ...
  3. Para el GET, Tipo: ClassName.get_CurrentFramesize()

    Para el conjunto, escriba: ClassName.set_CurrentFramesize(int)

Obtendrás una "fuente no disponible" cuando se alcance el punto de interrupción, pero obtendrás la ubicación de la llamada en la pila de llamadas.

He encontrado esta solución aquí: http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/b1dd0dc3-e9c1-402a-9c79-a5abf7f7286a

Consulte también: Debugging automatic properties

+3

De alguna manera me perdí tu respuesta durante dos años y medio. +1 ¡y aceptado! :) –

-2

No, no puede establecer un punto de interrupción en ellos, pero ¿qué verificaría? La variable para el almacenamiento de la propiedad automática solo se asigna en tiempo de ejecución y, como tal, no hay una variable para que el depurador muestre/acceda.

+11

Es posible que desee comprobar * cuando * está asignado, si parece obtener un valor incorrecto de "en algún lugar". –

+0

@Hans Kesting: Spot on. El depurador CLR no tiene * datos * puntos de interrupción, así que si esto fuera compatible, sería la mejor opción. –

2

La respuesta corta es: esta característica bug terminó en el piso de la sala de corte para VS2008.

(Longer answer - sombrero de punta @jdk)

Todo lo que tenemos es una vaga promesa de que está siendo considerado para vNext.

Cuestiones relacionadas