由於某種原因,我有時會發現它對查看函數的優化編譯器輸出有用或有意思。如何查看優化的jitted .NET代碼的反彙編?
對於非託管C/C++代碼,我最喜歡的方式是在發佈模式下進行編譯,在感興趣的函數中插入一個斷點,運行並查看Visual Studio中的反彙編到達斷點時的反彙編。
我最近試過這個與C#項目,並發現該技術不起作用。即使在發佈模式下,我看到的反彙編顯然沒有優化。我發現並禁用了(在Visual Studio 2010中)「調試...選項和設置...調試...常規...抑制模塊加載時的JIT優化」選項,這可以讓我更接近我想要的,只有現在,當我嘗試運行它時,它會發出警告,然後我無法在斷點處停下來,以便看到反彙編。因此,如果我想查看CLR(4.0)抖動的反彙編優化輸出,那麼最好的方法是什麼?爲了清楚起見,我希望看到x86(或最好是x86_64)反彙編,而不僅僅是IL反彙編(你可以在Reflector中看到)。
當這種情況發生時,你不喜歡(而且討厭)它嗎? :) – leppie 2010-08-06 12:19:00
@leppie:非常。這是一個需要知道解決方案的案例,以便知道要找到解決方案的詞組... – 2010-08-06 13:02:25