2017-06-19 75 views
1

我在Solaris上使用g ++。有沒有什麼方法可以在內部或外部知道函數調用中到目前爲止我使用了多少堆棧大小?這是診斷可疑堆棧溢出所必需的。使用C++在Solaris上查詢運行時堆棧大小

+1

相關/ dupe:https://stackoverflow.com/questions/2275550/change-stack-size-for-ac-application-in-linux-during-compilation-with-gnu-com – NathanOliver

+0

@NathanOliver我想要知道我已經消耗了多少堆棧大小到目前爲止不是最大限制 –

回答

1

靜態分析: 如果您的應用程序的堆棧大小(檢查編譯器選項-fstack-usage)請求編譯器/鏈接器進行靜態分析。

動態分析/方法: 使用調試器並將條件(寫入訪問)斷點設置到堆棧的末尾。 如果應用程序寫入堆棧的末尾,調試器將停止並向您顯示調用堆棧和導致內存違規的函數。

+0

如何將條件斷點設置到堆棧的末尾(在gdb中)? –

1

DTractToolkit有一個stacksize.d。這可能值得一看。