請原諒我如果這是一個愚蠢的問題。在應用程序(比如控制檯應用程序)運行時,是否可以通過編程方式「觀察」堆棧和堆的內容?有沒有API可以做到這一點?在應用程序中觀察堆棧和堆上的對象的值類型
回答
那麼,你可以嘗試使用CLR Debugger API - 雖然我不確定你是否可以在同一個過程中使用它。但是,我認爲可能有更好的解決方案......你究竟在做什麼?這裏的大圖是什麼?
純粹從學習的角度來看。我認爲每次應用程序(不同的應用程序,如您所提到的)新增一個對象時,看到一個計數器(在我的用戶界面上)在「堆」上增加會很有趣。更新: - 我想我應該從上面提到的鏈接中查看以下內容: - 「可以檢查線程以檢查其調用堆棧。線程的調用堆棧分爲兩級:鏈級和堆棧調用堆棧首先被分解成鏈,鏈是一個連續的邏輯調用堆棧段...「 – 2010-09-25 08:34:06
@ydobonmai:我會在單個應用程序中將它作爲一個事件掛鉤。除非你真的需要,否則我不會開始嘗試進入調試器API。 – 2010-09-25 08:36:37
「我會在單個應用程序中將它作爲一個事件掛鉤」。你在談論哪個「事件」?你的意思是你會在每個對象的構造函數中增加一個計數器,或者我完全錯誤了。你能舉個例子嗎? – 2010-09-25 08:40:20
我不知道雖然一些非託管代碼可以輕鬆跟蹤堆棧,但跟蹤堆需要考慮GC,因爲指針可以在每個GC之後移動。
現在,因爲唯一可以更改變量的應用程序就是您的控制檯應用程序(!),所以您爲什麼要這樣做?當然你只會跟蹤你在應用程序中自己正在做什麼。它是否存在bug修復?在這種情況下,我建議你做代碼審查,而不是黑魔法。
- 1. 可觀察堆棧和隊列
- 2. 堆棧或堆上的對象分配
- 3. 堆棧/堆上的對象創建?
- 4. 對象的堆棧上或堆棧上的隱藏成員?
- 5. 堆棧的大小和值類型
- 6. 看到應用程序線程使用的堆棧和堆量
- 7. enable_shared_from_this和堆棧上的對象
- 8. 角4 MEAN堆棧可觀察
- 9. 堆棧中的對象vs C++堆中的對象
- 10. 堆棧應該如何使用大對象堆棧?
- 11. Python是否有靜態對象,堆棧對象和堆對象?
- 12. 在堆和堆棧上創建混合矢量對象
- 13. 內核堆棧與用戶模式應用程序堆棧
- 14. 如何在C#.Net中查看堆棧和堆棧中的對象
- 15. 線程堆和堆棧
- 16. 堆/堆棧上的類成員分配?
- 17. 計數在堆棧和堆中爲許多類創建的對象
- 18. 堆棧上的對象意外刪除
- 19. RxJs堆棧觀測
- 20. 調用堆棧上的異常處理堆棧幀的順序
- 21. C++在將堆棧或堆棧中的類對象推入容器時創建類對象?
- 22. Java和不同類型的堆棧
- 23. 如何使用各種類型的對象填充堆棧
- 24. Python中小型Web應用程序的堆棧建議
- 25. JVM - 堆棧和堆棧
- 26. 堆棧上的值損壞
- 27. 在函數中創建的對象,是保存在堆棧還是堆上?
- 28. 堆棧的頂部應該在堆棧的鏈表中實現?
- 29. Haskell中的一般'無類型'堆棧
- 30. Android應用程序堆棧視圖
假設存在以下情況:執行觀察的代碼本身將使用堆棧和進程的堆,從而更改結果。你想要的是*調試器*或者*內存分析器*,或者兩者兼而有之。然後,您可以從流程外部*看看發生了什麼。以編程方式執行此操作:編寫一個調試器。 – 2010-09-25 14:10:40