2016-11-15 1 views
0

関数が呼び出されてその関数内で一時停止するまでgdbで実行を続行する方法はありますか?私が作業しているコードにnsを使用するのは苦痛です。 nextFramefinが好きで、nextFrameが存在すると仮定すると、新しい機能が追加されました。 nextFrameは、現在のスコープからスタックを巻き戻すときのみ、つまり別の関数呼び出しを行わずに現在のスコープの最後の行で一時停止するときにわかります。gdb呼び出しスタック上の新しいフレームまで実行を続行します

基本的には、コードベースをコールスタックの観点から見て、ラインごとの視点からは見たくなりません。

P.S.そのような施設が存在すると仮定すると、私はそれがboostと一緒に使うのは問題があると思います。例えば。 boost::shared_ptr<MyType> a = foo();のような行がある場合は、最初にboostコード内で停止してから、foo()の内部で一時停止します。これはブーストコードには興味がなく、fooの内部だけを見たいので、問題です。

P.S.私はまた、clangを持っています。これがclangで可能かどうか疑問です。

+2

デバッグ情報がある場合は、すべての機能(シンボル)にブレークポイントを設定するか、自動的にあなたのためにステップアップし、 'call'と' ret'命令と等価物をブレークするようにGDBをスクリプトできます。これらのアプローチの複数の実装がそこに存在します.. –

+0

@MichaelFoukarakisありがとう、これは面白いと思うよ –

答えて

0

b function_nameを使用して、関数内にブレークポイントを適用します。 実行中のプログラムは、その関数のエントリで一時停止します。 または b filename:line_numberを使用して、ファイルの特定の行でプログラムの実行を一時停止することもできます。

+0

これは次のステップ –

関連する問題