Apache Zookeeper Cランタイムライブラリを使用してアプリケーションをデバッグしているときに、GDBのデフォルトのオールストップモードでブレークポイントを設定すると問題が発生します。Zookeeperスレッドを実行できない場合、サーバーはセッションをタイムアウトし、作成した一時的なznodeを削除します。ノンストップモードを使用すると、これを防ぐことができますが、Zookeeper以外のスレッドの状態を調べることができるという便利さが失われます。
GDBに、ブレークポイントに達したときに1つ(または複数)のスレッドがアプリケーションで実行を継続するが、他のスレッドは実行を停止するように指定する方法はありますか?そうすれば、気になるスレッドの状態を調べて、バックグラウンドで実行したいスレッドの状態を無視することができます。
編集:これは基本的に、gdb内のすべてのスレッドを停止しないことの複製です。ノンストップモードでバックグラウンドコマンドを使用するための解決策は、スレッドを停止し、必要なときに非同期で再起動できるため、基本的に問題を解決します。したがって、これを閉じる必要があります。