これは 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は、アプリケーションプロセスを強制終了することが最初ではなく、最後の解決策であることを知っています。

コメント

  • デフォルト設定でgdbで実行している場合、Ctrl-Cはアプリケーションを強制終了せず、デバッガーに侵入するだけです。 contを使用して"信号を飲み込み"すると、アプリケーションは邪魔されずに続行します。または、signal 2を使用して、SIGINT(2)をアプリケーションに渡します。または、killを使用してアプリケーションを強制終了します。

回答

これにはシグナルを使用できます。プログラムを開始する前に、USR1またはUSR2を設定して、gdbに影響を与えずに中断します。プログラム:

handle SIGUSR1 nopass 

次に、プログラムを実行できます。プログラムを停止する必要がある場合は、からkill -USR1を実行します。適切な(子)pidを持つ別のシェル。 gdbはアプリケーションを一時停止します。その後、ブレークポイントを追加したり、状態を調べたりできます。必要に応じて、cont

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です