私はX用のウィンドウマネージャを作成してデバッグしています。
私のアプリケーションでgdbを実行できるようにしたいです。このアプリケーションにはXモニターが必要です。 2つのセッションを並列に実行したいと思います。 1つは開発してgdbとアプリケーションを実行するセッション、もう1つはアプリケーションをリダイレクトするセッションです。
私はVTを何度も試しました。
- gdm を使用して開発セッションにログインします。
- 別のVTに移動するには、Ctrl + Alt + F3を使用してください(私はUbuntu 20.04を使用しています)。
- 新しいXセッションを開始
sudo X :2
最後のコマンドは、tty2の開発セッションとtty1のgdmログインを含む他のすべてを終了します。黒い画面が残りました。
私もそれを試しましたが、startx
デスクトップ環境が開きます(GNOMEのように見えます)。~/.xinitrc
、をに変更しようとしましたが、unset XDG_RUNTIME_DIR && sleep 60
60秒間他のttyにアクセスできませんでした。
unset XDG_RUNTIME_DIR && X :2
実際には失敗せずにすぐに返されます。
別のTTYで自分のアプリケーションを実行してデバッグできるように、TTYから別々のXセッションを取得するにはどうすればよいですか?
答え1
奇妙なことに、Ubuntu 20.04ではX :1 vt3 &
。
しかし、私はそれから始めることができますstartx
。
私の現在のソリューション:
存在する~/.xinitrc
:
unset XDG_RUNTIME_DIR && xhost +local: && tail -f /dev/null
XDG_RUNTIME_DIR
ファイルを混在させないでください。xhost
他のVTのプログラムが新しいVTに出力され、tail
何も実行せずに待機できます。
新しいVT(VT3)では、.loginを使用してログインしてXサーバーを起動できるようになりましたstartx
。
その後、最初のVT(VT2)でDISPLAY
コマンドを使用して別のVTの変数を確認し、w
私のアプリケーションでgdbを実行できます。
DISPLAY=:1 gdb ./my_app
これは間違いなく解決策のように感じます。 .を使用して最初のサーバーをシャットダウンせずに新しいXサーバーを起動する方法が必要ですが、X
現時点ではこの方法で十分です。