当前位置:  开发笔记 > 编程语言 > 正文

VS在C#代码中获得返回值?

如何解决《VS在C#代码中获得返回值?》经验,为你挑选了2个好方法。

在VS中调试C/C++(非托管?)代码时,在退出函数后,您可以在"autos"窗口中看到返回的值:

替代文字http://img156.imageshack.us/img156/6082/cpp.jpg

但是,这对C#代码不起作用:

alt text http://img120.imageshack.us/img120/9350/38617355.jpg

关于如何获得返回值除了使用临时变量混乱代码之外的任何建议?



1> Hans Passant..:

它实际上是可见的.调试+其他Windows +注册表.查看EAX的值(x64中的RAX).简单积分类型的值在EAX寄存器中返回.在EDX很长:EAX.STx中的浮点(x64中的XMM00).


这很难实现,抖动决定了方法如何返回值,不同的抖动会做出不同的选择.特别是当返回值类型不简单时,如结构.如果它很大,那么抖动将在调用方法上保留堆栈空间并将指针传递给该空间,以便被调用的方法可以在那里复制返回值.尽管如此,VS2013 最终还是推出了,目前已预览.在"自动"窗口中可见,并使用$ReturnValue"立即"窗口中的内部变量并观察表达式.



2> JaredPar..:

不幸的是,在托管代码(C#或VB)中以唯一的方式使用临时变量使代码混乱.CLR不支持调试器中的"托管返回值",因此VS也不支持.

在C++中,此功能稍微简单一些.C++只能获取最后一个返回值的寄存器或堆栈位置.它不必处理像JITer和垃圾收集这样的问题.这两者都使诸如此类的特征大大复杂化.

如果您需要此功能,我强烈建议您在连接时提交功能请求或投票给现有功能

https://connect.microsoft.com/VisualStudio

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有