VIsual Studio - 如何在调试器中更改方法的返回值?

Syl*_*gue 9 debugging visual-studio

当我调试时,我经常不得不处理不使用中间变量来存储返回值的方法:

   private int myMethod_1()
   {
      return 12;
   }

   private int myMethod_2()
   {
      return someCall( someValue );
   }
Run Code Online (Sandbox Code Playgroud)

好吧,为了重新创建一个bug,我经常需要动态更改值.在这里,我想看看myMethode_1返回零时会发生什么.同样的事情myMethod_2.

有没有办法在不修改代码的情况下做到这一点?我想做的是,在返回行(或结束括号)上放置一个断点并输入一个新的返回值.

注意:我正在使用Visual Studio 2005和Visual Studio 2008.

谢谢 !

Syl*_*gue 6

对于那些正在 VB.NET 中寻找解决方案的人:

它是如此简单,我不敢相信我没有看到它:要查看函数将返回的值:只需将指针放在函数名称上即可。该值将显示在工具提示中。

更改值:只需单击此工具提示,更改值并按 Enter 键。

Visual Studio 非常酷!

注意:我在 Visual Studio Team System 2008 上的 VB.NET 中测试了它。刚刚尝试使用 C#,但它不起作用...:-(


sho*_*osh 5

函数的返回值通常在EAX寄存器中返回。

如果仅在函数末尾设置断点,则更改EAX可能会更改返回值。您只需在监视窗口中写入其名称即可在Visual Studio中更改和查看任何寄存器。
如果您进行了优化,或者即使函数是类似的简单功能,也很可能会失败return 12。如果您返回的内容不适合32位寄存器,则可能也无法正常工作。至少值得尝试。