【问题标题】:Getting the return value of a method via DTE.Debugger without evaluating the method?通过 DTE.Debugger 获取方法的返回值而不评估方法?
【发布时间】:2010-09-06 15:43:34
【问题描述】:

我正在寻找一种通过 Visual Studio 调试器(使用 DTE)获取方法返回值的方法。如果我在方法的右括号中但尚未退出,是否可以获得它?此外,最好不要通过即时窗口再次评估函数。

【问题讨论】:

    标签: visual-studio debugging return-value envdte


    【解决方案1】:

    不。调试器没有足够的信息来说明 JIT 编译器生成代码以返回值的确切方式。它是抖动的重要实现细节以及它为其生成代码的特定架构。

    像对象和整型这样的简单类型问题不大,通常是 EAX/RAX 寄存器、FPU 堆栈或 XMM0 寄存器。当方法返回一个结构时,它会变得复杂。这被映射到结构适合的寄存器,但是当结构太大时需要溢出到临时堆栈缓冲区中。

    我怀疑他们需要对抖动生成的元数据做大量工作才能使其正常工作。您将知道该工作何时完成,它将在“自动”窗口中可见。就像过去一样,回到简单的日子。

    【讨论】:

    • +1,我们考虑的另一个选项是在代码生成的中间步骤中,将每个方法调用保存到堆栈变量中,然后我们可以将其放入监视窗口。但是由于复杂性+混乱而被放弃了。
    猜你喜欢
    • 2023-02-17
    • 2015-05-21
    • 2018-04-05
    • 2019-03-07
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多