ncursesクライアントで TUI ツールキットとして使用する小さなクライアント/サーバー アプリケーションを作成しています。クライアントはマルチスレッドで、(ソケット経由で) サーバーとの通信に使用されるスレッドと、UI を処理するスレッドがあります。バグを発見したので、クライアントの指示に従って、問題がどこにあるかを確認したいと思います1。
クライアントと同じターミナルを使用するため、クライアントを実行するだけでgdbは機能しませんgdb。したがって、出力がすべてめちゃくちゃになり、出力を読み取るのが非常に難しくなり、gdb干渉するようにも見えますcurses(たとえば、halfdelayステップ実行時のモード)プログラムgdbが少しの時間の後にドロップするたびに、クライアントにキープレスを送信することはできません.)
gdb「専用端末」で実行する方法はありますか? このアプリケーションをデバッグするには、別のアプローチを使用する必要がありますか? この特定のコンテキストで障害の数を減らす方法について何か提案はありますか?
1実際のバグは、UI が一定数のアクションの後 (完全に決定論halfdelay的な方法で) 更新されず、余分なキー押下を待機することです (これを回避するためにモードを正確に設定したため、これは必要ありません)。 . クライアントがその瞬間に何をしているのかを知りたいのです。