저는 X용 창 관리자를 작성하고 디버깅하고 있습니다.
내 애플리케이션에서 gdb를 실행할 수 있기를 원합니다. 이 응용 프로그램에는 X 모니터가 필요합니다. 두 개의 세션을 병렬로 실행하고 싶습니다. 하나는 개발하고 gdb와 애플리케이션을 실행하는 세션이고 다른 하나는 애플리케이션을 리디렉션하는 세션입니다.
나는 VT를 여러 번 시도했습니다.
- gdm을 사용하여 개발 세션에 로그인합니다.
- 다른 VT로 이동하려면 Ctrl+Alt+F3을 사용하세요(저는 Ubuntu 20.04를 사용하고 있습니다).
- 새 X 세션 시작
sudo X :2
마지막 명령은 tty2의 개발 세션과 tty1의 gdm 로그인을 포함하여 다른 모든 것을 종료합니다. 검은 화면이 남았습니다.
나도 그것을 시도했지만 startx
데스크탑 환경이 열립니다(그놈처럼 보입니다). ~/.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
현재로서는 이 방법만으로도 충분해 보입니다.