私は、無限再帰的な混乱に深く下降した後にフォールトをセグメント化するCプログラムを持っています。コールスタックフレームは少なくとも 1000フレームの深さであり、繰り返される関数呼び出しは4つの一般的な再帰関数呼び出しの連続であるため、GDBでのプロセスのバックトレースは役に立ちません(したがって、ブレークポイントは役に立たないようです)。backtraceを繰り返し呼び出すと、4つの関数名が何度も何度も読み取られます。「up」、「up」、「up」を実行すると、さらに高くなるので、このパターンが最初に発生した場所を確認できましたが、最上位の呼び出しから開始する方が効率的であるようですフレームをスタックし、代わりにステップダウンします。これは、無限の再帰がプロセスの早い段階で開始されることが私の直感であるからです。コールスタックのフレーム数が合計Nだった場合、
gdb>> up N
スタックの最上部(N番目のフレーム)に到達するには、Nがわからないという問題があります。コールスタック内のフレームの総数を見つけるコマンドはありますか?または、一番上のフレームにジャンプするための洗練された組み込みGDBコマンドはありますか?一番上のフレームがmain()関数であるべきだと思いました-その知識を利用して一番上のフレームに到達できますか?