これは gdb setoverwriteログオンに関連しています。gdb.txtを正しく上書きする必要がありますか?。
あるアプリケーションのセッションを実行しているとしましょう。例として、qbittorrentの例をもう一度見てみましょう。
これまでに共有されたように、実行はどのように行われるかです-
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
私が知っている1つの方法は、アプリケーションを正常に終了することですが、アプリケーションがハングすることがあります/時間がかかりすぎるか、単に応答しません。
次に、CTRL+C
を使用するしかありません。これは、理解していれば、基になるアプリケーションを正しく強制終了します。 、この例では、qbittorrentを使用して、
(gdb) quit
を使用してgdbを終了できます。アプリケーションを終了する他の方法はありますか? gdbセッションを実行し続けるか、上記の大まかな方法が唯一の方法です。
AFAIは、アプリケーションプロセスを強制終了することが最初ではなく、最後の解決策であることを知っています。
コメント
回答
これにはシグナルを使用できます。プログラムを開始する前に、USR1
またはUSR2
を設定して、gdb
に影響を与えずに中断します。プログラム:
handle SIGUSR1 nopass
次に、プログラムを実行できます。プログラムを停止する必要がある場合は、からkill -USR1
を実行します。適切な(子)pidを持つ別のシェル。 gdb
はアプリケーションを一時停止します。その後、ブレークポイントを追加したり、状態を調べたりできます。必要に応じて、cont
。
gdb
で実行している場合、Ctrl-Cはアプリケーションを強制終了せず、デバッガーに侵入するだけです。cont
を使用して"信号を飲み込み"すると、アプリケーションは邪魔されずに続行します。または、signal 2
を使用して、SIGINT(2)をアプリケーションに渡します。または、kill
を使用してアプリケーションを強制終了します。