UIプログラムをデバッグするとき、「待機または強制終了」ダイアログが頻繁に表示されます。
このダイアログは基本的にすべてをブロックするため、これは非常に迷惑です。いずれかのオプションを選択するまで、グラフィカルシステム全体が使用できなくなります。
これを完全に無効にするか、少なくともこのウィンドウを無視するオプションがあります。
これは既知の問題です。 gdbでデバッグするときに「プログラム」が応答しない を参照してください。
他のバグレポートから判断すると <何か>が応答していないウィンドウがプログラムのデバッグ時に常に表示されます 、関連しているように見えますが、問題はgnome-Shell
バージョン3.28.4で修正されているようです。
apt-cache policy gnome-Shell
インストールされているバージョンを確認するには を実行します。
古いバージョンを使用している場合は、次のコマンドを実行してUbuntu18をアップグレードしてみてください。
Sudo apt update
Sudo apt dist-upgrade
ただし、この問題はgdbデバッグ用に未解決のままです。
別の方法として、「ウィンドウが応答しない」ダイアログを遅らせることが良い解決策になる場合があります。 応答しないプログラムの待機時間を増やす方法は? これに関連していますが、それを行う方法の詳細を見つけることができませんでした。
更新とパッチが不可能または不便な場合のより簡単な回避策。
zenity
のラッパースクリプトを作成します。 (正確な~/.../bin
の場所については、$ PATHを確認してください)。mutter-dialog
または特定の引数を持つ呼び出しを除外します。/usr/bin/zenity $@
)参照: RHバグ:プレリンク/コンパイル/ロードされている間、すべてに対して「強制終了」または「待機」ポップアップが煩わしい
Mutter≥3.35.92のバージョンでは、ウィンドウがまだ生きているかどうかをチェックするために使用されるタイムアウトを設定できます。これは、待ち時間が長いSSHを介したX転送にも役立ちます。たとえば、次のコマンドを使用して、タイムアウトを60秒(60000ミリ秒)に設定できます。
gsettings set org.gnome.mutter check-alive-timeout 60000
これを実現する1つの方法は、ダイアログが表示されるまでにウィンドウが「応答しない」ことが許される時間を変更することです。これを処理するコードはlibmutter-4-0
ライブラリにあり、時間は5秒にハードコードされています。以下はハックの一種であり、あまりエレガントではありませんが、機能します。 (そして、私はそれをすることを楽しんだ!)
次のように、libmutter-4-0
パッケージのソースコードを取得できます。
apt-get source libmutter-4-0
mutter-3.32.2+git20190711
というディレクトリが作成されます。そのディレクトリ内に移動します。
cd mutter-3.32.2+git20190711
次に、ファイルsrc/core/display.c
を次のように変更します。
#define PING_TIMEOUT_DELAY 5000
つまり、「応答なし」ダイアログが表示されるまで5000ミリ秒待機します。それをはるかに大きな値に変更します。5000秒を使用する5000000を使用しました。
#define PING_TIMEOUT_DELAY 5000000
その変更を行ったので、変更されたライブラリーをビルドします。これを行うには、まず次のように構成します。
meson _build
(その時点で、依存関係がないためにエラーが発生する可能性があります。Sudo apt install
を使用して不足しているものをインストールし、meson _build
を再試行してください)
次にビルドします:
ninja -C _build
その後、新しいライブラリファイルは./_build/src/libmutter-4.so.0.0.0
にあります-これをインストールするだけです。
Sudo install ./_build/src/libmutter-4.so.0.0.0 /usr/lib/x86_64-linux-gnu/
次に再起動して、新しいライブラリファイルを使用してウィンドウマネージャーが再起動されたことを確認します。再起動後、「応答なし」ダイアログは効果的に無効化されます(厳密には、使用したPING_TIMEOUT_DELAY
値によっては、最終的には表示される場合があります)。
この変更を元に戻して元のライブラリファイルを再インストールする場合は、Sudo apt reinstall libmutter-4-0
を使用して行うことができます。