1
我正在尋找一種方法來通過Visual Studio調試器(使用DTE)獲取方法的返回值。如果我在方法的大括號但是尚未退出,是否有可能獲得它?此外,如果不通過即時窗口再次評估函數,這可能是最好的。通過DTE.Debugger獲取方法的返回值而不評估方法?
我正在尋找一種方法來通過Visual Studio調試器(使用DTE)獲取方法的返回值。如果我在方法的大括號但是尚未退出,是否有可能獲得它?此外,如果不通過即時窗口再次評估函數,這可能是最好的。通過DTE.Debugger獲取方法的返回值而不評估方法?
沒有。調試器沒有足夠的有關JIT編譯器生成代碼以返回值的確切方式的信息。這是抖動的重要實現細節以及它爲其生成代碼的特定體系結構。
像對象和整型類型的簡單類型並不是什麼大問題,通常是EAX/RAX寄存器,FPU堆棧或XMM0寄存器。當方法返回一個結構時它會變得複雜。這被映射到註冊結構適合它,但是當結構太大時需要在一個臨時堆棧緩衝區溢出。
我懷疑他們需要在抖動產生的元數據上做很多工作才能工作。你會知道這項工作何時完成,它會在Autos窗口中顯示。就像過去一樣,回到簡單的日子。
+1,我們考慮過的另一個選項是在代碼gen的中間步驟中,它將每個方法調用保存到一個堆棧變量中,然後我們可以將它們放入監視窗口中。儘管由於複雜性+混淆,這被放棄了。 – JaredPar 2010-09-06 16:13:15