簡體   English   中英

堆棧溢出后,Visual Studio 2008顯示完整的堆棧跟蹤

[英]Visual Studio 2008 show FULL stack trace after stack overflow

我有一個正在運行的C ++項目,當我在IDE中的調試器下運行該項目時,它發生了堆棧溢出。

Visual Studio 2008自行截斷了溢出線程的堆棧跟蹤(好吧,如果我們要這樣做,為什么還要檢查是否有溢出?)。

是否有一些視圖選項或調試選項可以向我顯示此線程調用的根?

因此,從本質上講,除了向我提供為什么會損壞堆棧跟蹤的原因(我也應禁用我的AV並同時運行memtest86嗎?),有人是否有關於Visual Studio 2008中截斷堆棧跟蹤的實際信息?

一種簡單的解決方案是從一開始就使堆棧足夠小,以便堆棧溢出更早發生。 無論如何,您都不想要一百萬個重復功能。

如果您希望擁有較大的堆棧並避免由於某些簡單的遞歸錯誤而導致堆棧溢出,請使用TLS: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms686749( v= vs.85) .aspx

在進程開始時分配一個插槽,然后使用TlsGetValue和TlsSetValue遞增該插槽的值,然后檢查是否超過了該插槽的值,然后闖入調試器,或者在您認為有問題的函數中執行其他“暫停”操作。

沒有黑客,它將無法用於第三方代碼,但對我來說,克服限制並保持輕巧效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM