在VS中调试C/C++(非托管?)代码时,在退出函数后,您可以在"autos"窗口中看到返回的值:
替代文字http://img156.imageshack.us/img156/6082/cpp.jpg
但是,这对C#代码不起作用:
alt text http://img120.imageshack.us/img120/9350/38617355.jpg
关于如何获得返回值除了使用临时变量混乱代码之外的任何建议?
它实际上是可见的.调试+其他Windows +注册表.查看EAX的值(x64中的RAX).简单积分类型的值在EAX寄存器中返回.在EDX很长:EAX.STx中的浮点(x64中的XMM00).
这很难实现,抖动决定了方法如何返回值,不同的抖动会做出不同的选择.特别是当返回值类型不简单时,如结构.如果它很大,那么抖动将在调用方法上保留堆栈空间并将指针传递给该空间,以便被调用的方法可以在那里复制返回值.尽管如此,VS2013 最终还是推出了,目前已预览.在"自动"窗口中可见,并使用$ReturnValue
"立即"窗口中的内部变量并观察表达式.
不幸的是,在托管代码(C#或VB)中以唯一的方式使用临时变量使代码混乱.CLR不支持调试器中的"托管返回值",因此VS也不支持.
在C++中,此功能稍微简单一些.C++只能获取最后一个返回值的寄存器或堆栈位置.它不必处理像JITer和垃圾收集这样的问题.这两者都使诸如此类的特征大大复杂化.
如果您需要此功能,我强烈建议您在连接时提交功能请求或投票给现有功能
https://connect.microsoft.com/VisualStudio