アプリケーションが応答しないときにgdbで実行されているアプリケーションを正常に終了する方法

アプリケーションが応答しないときにgdbで実行されているアプリケーションを正常に終了する方法

何か関連があると思います。gdb設定のオーバーライドログは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を終了できました。

(gdb) quit

アプリケーションを終了してgdbセッションを実行し続ける他の方法はありますか?それとも、上記の粗雑な方法である唯一の方法です。

AFAIは、申請手続きを終了することが最初ではなく最後の解決策でなければならないことを知っています。

ベストアンサー1

これには信号を使用できます。プログラムを開始する前に、プログラムに影響を与えずに設定またはUSR1割り込みを実行してくださいUSR2gdb

handle SIGUSR1 nopass

その後、プログラムを停止する必要がある場合は、kill -USR1適切な(サブ)pidを使用して他のシェルでプログラムを実行できます。gdbアプリケーションが一時停止したら、ブレークポイントを追加してステータスを確認し、必要に応じて再開を使用できますcont

おすすめ記事