0

次のようなコマンドファイルでgdbを実行するスクリプトがあります:

set logging file file_name
set logging on
thread apply all bt
q
y

pstack がこのスクリプトよりもはるかに高速なのはなぜですか? どういうわけかgdbでその速さを達成できますか?

編集:違いはgdbのバージョンでした。gdb-7.10 を使用しましたが、スタック トレースをダンプするのに約 14 秒かかりました。pstackが使用したgdb 7.0.1では、2秒かかりました。ほとんどの時間は、ライブラリからシンボルをロードするために gdb-7.10 に費やされました-readneverが、新しいバージョンでは適切なオプションが見つかりませんでした。

4

1 に答える 1

1

私のシステムでは、少なくともpstackgdb を実行するシェル スクリプトがあるため、実行可能ファイルを見るだけで、実行されている内容を正確に確認できるでしょうpstack

スクリプトの興味深い部分は次のようになると思います。

set width 0
set height 0
set pagination no

実はset pagination noと同じなのでset height 0、その部分は忘れて構いませんset pagination no

gdb が端末の幅にラップされた出力を表示し、一度に表示されるページを表示しようとする試みset height 0set width 0オフにします。

このラッピングとページ単位の出力により、gdb が何かを出力するたびに多くの追加処理が発生することが予想されます。

スクリプトには他にあなたのスクリプトと異なる点はあまりないpstackので、他に何ができるかわかりません。

于 2016-02-20T18:05:53.937 に答える