是否有可能在每行執行後看到堆棧和堆棧的內容。我希望看到它,因爲它可以清楚地瞭解.Net中的內存分配和釋放。與您的如何在C#.Net中查看堆棧和堆棧中的對象
如果有任何文件或鏈接,將清除我的疑惑與您的答案,請分享。
是否有可能在每行執行後看到堆棧和堆棧的內容。我希望看到它,因爲它可以清楚地瞭解.Net中的內存分配和釋放。與您的如何在C#.Net中查看堆棧和堆棧中的對象
如果有任何文件或鏈接,將清除我的疑惑與您的答案,請分享。
一旦你把它整理出來,將WinDbg附加到您的進程,加載調試器擴展。例如:
.load C:\pathtoextensions\psscor4.dll
之後,你可以發出!dumpheap
或!dumpstack
命令。
這兩個命令的輸出都非常原始。 !dumpheap -stat
將爲您提供堆的「統計」概覽。所有分配的類型,分配的數字和總共的字節數。
這不是一個超級簡單的任務。如果您以前沒有使用WinDbg,那麼需要花費一些時間才能獲得足夠的練習。
你可以做的是在使用!bpmd
的方法上設置一個斷點,然後使用上面提到的命令,然後使用p
命令重新執行,然後重新運行這些命令。
我確定還有其他商業工具,如ANTS Profiler或dotTrace可能會完成工作 - 但我對這兩種工具都沒有太多的經驗。
一旦你開始了,你可以詢問(新)關於SOS或Psscor的更具體的問題。
堆棧:
var stackInfo = new StackTrace();
堆?不,你需要使用分析器,調試器或合適的API。不是一個簡單的任務。如果您嘗試並遇到困難,最好提出一個更具體的問題。
這是一個*很多數據,它可能不會告訴你很多。 (或者更糟糕的是,你會抱怨說,它從來沒有收集到你看到的20行代碼中的垃圾。)如果你對內存分配和垃圾收集有疑問,提出問題和/或尋求高級解釋,那更有可能清理一下。 – delnan
當然,我現在肯定會這樣做 – funsukvangdu