¿Puedo averiguar el valor de retorno antes de regresar mientras depuro en Visual Studio?

Resuelto doekman asked hace 15 años • 21 respuestas

Tome la siguiente función:

DataTable go() {
    return someTableAdapter.getSomeData();
}

Cuando establezco un punto de interrupción en esta función, ¿existe la posibilidad de inspeccionar el valor devuelto? go()está directamente acoplado a una cuadrícula de datos en una .aspxpágina.

La única forma de inspeccionar la tabla de datos devuelta es utilizar una variable temporal. Sin embargo, eso es un poco inconveniente. ¿No hay otra manera?

doekman avatar Nov 06 '08 16:11 doekman
Aceptado

No que yo sepa. Tenga en cuenta que si agrega una variable, el compilador la eliminará en las versiones de lanzamiento de todos modos...

Actualización: esta funcionalidad se ha agregado a VS2013 . Puede ver los valores de retorno en las ventanas automáticas o usar $ReturnValue(o $ReturnValue1o $returnvalue, según la versión de VS) en la ventana de visualización/inmediato.

El valor solo se puede ver directamente después de regresar de la función, por lo que la forma más fácil de acceder a él es colocando un punto de interrupción en la llamada a la función y pasando por encima (F10) la llamada.


Actualización para VS2015: ¡abucheo! desafortunadamente, no parece estar en
la actualización VS2015 (devenv v14) para VS2017: ha vuelto. (deven v15)

Marc Gravell avatar Nov 06 '2008 09:11 Marc Gravell

Esto se puede hacer en Visual Studio 2013 con CLR 4.5.1 según el sitio de comentarios de los clientes . No estaba disponible en versiones anteriores para C#.

(Visual Studio 2008 y versiones anteriores lo admitieron para VB.NET. Siempre ha estado disponible para los desarrolladores de C/C++).

Alex Angas avatar Sep 15 '2010 05:09 Alex Angas

Estoy de acuerdo en que esto es algo muy útil: no solo ver el valor de retorno del método antes de salir de él, sino también ver el valor de retorno de los métodos que acabo de pasar. Lo implementé como parte de una extensión comercial de Visual Studio llamada " OzCode ".

Con él, puedes ver los valores de retorno del método directamente en el editor de código, como una especie de pantalla HUD:

Visualización de declaraciones

Para obtener más información, consulte este vídeo .

Omer Raviv avatar Nov 18 '2011 09:11 Omer Raviv

Según Microsoft, no hay forma de implementar esto de manera confiable con código administrado. Este es un problema que conocen y en el que están trabajando:

Para aquellos que tienen experiencia en la depuración de código nativo C++ o VB6, es posible que hayan utilizado una función donde se proporcionan los valores de retorno de la función en la ventana Autos. Lamentablemente, esta funcionalidad no existe para el código administrado. Si bien puede solucionar este problema asignando los valores de retorno a una variable local, esto no es tan conveniente porque requiere modificar su código. En código administrado, es mucho más complicado determinar cuál es el valor de retorno de una función que has omitido. Nos dimos cuenta de que no podíamos hacer lo correcto de manera consistente aquí y por eso eliminamos la función en lugar de brindarle resultados incorrectos en el depurador. Sin embargo, queremos traerle esto nuevamente y nuestros equipos de CLR y Debugger están buscando varias soluciones potenciales a este problema. Desafortunadamente, esto no será parte de Visual Studio 11.

https://connect.microsoft.com/VisualStudio/feedback/details/597933/add-a-return-pseudo-variable-to-the-visual-studio-debugger-for-net-code

Dan Solovay avatar Jun 17 '2012 14:06 Dan Solovay