我有一個「有時」不會中斷遞歸併以堆棧溢出結束的算法。現在我想調試這種情況。 gdb直接指向我覆蓋堆棧寄存器的那一行,但不可能獲得堆棧跟蹤,因爲gdb需要無盡的時間來展開堆棧並將其顯示在ddd中。在調試會話中減少堆棧大小以捕捉無盡的遞歸
我現在只是想減少堆棧大小以便早日獲得腐敗。所以我需要一種方法來減少爲我的運行任務堆棧。沒有涉及的線程,所以它不應該是這樣。
但我不知道如果gdb本身有一個操縱堆棧(大小)本身的選項,或者我需要在編程開始時編程改變大小,或者我可以減小os命令行的大小(linux )開始調試會話後。
也許如果gdb有這樣的選項,如果調用樹達到最大深度,也可以停止。
使用ulimit -s不能提供幫助,因爲這會影響調試會話,而不僅僅是應該調試的程序。有沒有機會從gdb設置ulimit -s?但是,以編程方式減少堆棧大小的鏈接適合我的問題。也許你可以改變你的答案給其他用戶。 – Klaus
我更新了我的答案 – user2807083
要僅在目標中設置ulimit,請嘗試使用'(gdb)set exec-wrapper sh -c'ulimit -s 32; exec「$ 0」「$ @」'''。更多關於'exec-wrapper'的語義[這裏](http://stackoverflow.com/a/27510210/2554472)。 –