我能够在Visual Studio中进行调试时在返回以前找出返回值吗?

具备如下功能: 编程

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

当我在此函数中设置断点时,是否有可能检查返回的值? go()直接与.aspx页中的数据网格耦合。 函数

检查返回的数据表的惟一方法是使用临时变量。 可是,这有点不方便。 有没有其余办法? visual-studio


#1楼

根据Microsoft的说法,没法使用托管代码可靠地实现此目的。 这是他们意识到并正在解决的问题: spa

对于那些有调试本机C ++或VB6代码经验的人,您可能使用了在“自动”窗口中为您提供函数返回值的功能。 不幸的是,托管代码不存在此功能。 尽管您能够经过将返回值分配给局部变量来解决此问题,但这并不方便,由于它须要修改您的代码。 在托管代码中,肯定您跨过的函数的返回值要麻烦得多。 咱们意识到在这里没法始终如一地作正确的事情,所以咱们删除了该功能,而不是在调试器中给您错误的结果。 可是,咱们但愿为您带来帮助,咱们的CLR和Debugger团队正在寻找解决此问题的许多潜在解决方案。 不幸的是,这不是Visual Studio 11的一部分。 debug

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


#2楼

.NET之前的古老技巧:打开“寄存器”窗口,查看EAX寄存器的值。 它包含最后一个调用函数的返回值。 code


#3楼

我认为您能够经过在“寄存器”窗口(“调试” /“ Windows” /“寄存器”)中查看RAX寄存器来肯定这一点。 退出功能(SHIFT + F11)后,检查RAX寄存器。 我不知道一个事实,可是一旦过了月亮,您就能够检查一个寄存器(.NET以前的日子)并在那里查看返回值。 它甚至多是RAX和RBX等的组合。 get


#4楼

是的,经过切换到VB.NET。 ; P(您刚才说的是“ Visual Studio”。) it

只要我能记住(从Visual Basic到VB.NET的全部版本),您均可以简单地查询函数名称。 它像局部变量同样在函数的“函数”中隐式声明,该变量在函数的开始处隐含声明,而且当函数经过非返回语句手段(例如, Exit Function或刚刚掉线)退出时,其当前值也用做返回值,固然,当使用return语句时。 io

它还设置为return语句的表达式。 就像局部变量同样,能够在函数内部的任何执行点(包括执行return语句以后)检查其值。 C#没有,应该。

VB.NET的那个小功能(加上它启用的Exit Function语句-C#没有而且应该有的另外一个功能)在防护性编程中很是有用,我在练习中老是将函数名初始化为失败/默认值做为第一个陈述。 而后,在任何故障点(一般比成功点发生的频率高得多),我能够简单地调用Exit Function语句(即,没必要重复故障/默认表达式甚至是常量/变量名称)。


#5楼

是的,有一个很是好的方法。 一个重大的缺点是您必须等待5到6年。 因为我看到您是在2008年11月发布的,所以建议您waaaaaa ...

... aaaait。 和瞧! MS仅针对您发布了最新的Visual Studio 2013 ,它是在调试模式下运行时从菜单中可访问的默认功能(菜单DebugWindowsAutos )。

相关文章
相关标签/搜索