これは多少関連しています gdb set overwrite logging on should should overwrite gdb.txt correct? 。
アプリケーションのセッションを実行しているとしましょう。例として、qbittorrentの例をもう一度見てみましょう。
前に共有したように、これは実行がどのように発生するかです-
$ gdb qbittorrent
(gdb) set logging overwrite on
(gdb) set logging on
(gdb) set pagination 0
(gdb) run
私が知っている1つの方法は、アプリケーションを正常に終了することですが、アプリケーションがハングしたり、時間がかかりすぎたり、単に応答しない場合があります。
次に、私に残っている唯一のオプションは、CTRL+C
を使用することです。これは、基礎となるアプリケーション(この例ではqbittorrent)を正しく強制終了し、次の方法でgdbを終了できることを理解している場合です。
(gdb) quit
アプリケーションを終了してgdbセッションを実行し続ける方法は他にありますか、それとも唯一の方法は上記の粗雑な方法です。
AFAIは、アプリケーションプロセスを強制終了することが、最初ではなく最後のソリューションであることを認識しています。
これにはシグナルを使用できます。プログラムを開始する前に、プログラムに影響を与えずにgdb
を中断するようにUSR1
またはUSR2
を設定します。
handle SIGUSR1 nopass
次に、プログラムを実行できます。プログラムを停止する必要がある場合は、適切な(子)pidを使用して別のシェルからkill -USR1
を実行します。 gdb
はアプリケーションを一時停止し、ブレークポイントを追加したり、状態を調べたりすることができます。必要に応じて、cont
を使用して実行を続行します。