Как входить, выходить и выходить с помощью GDB?

Предполагая, что вы используете X.org, это кажется невозможным. X-сервер поддерживает параметр , называемый -novtswitch , но он применяется только при выходе из X-сервера, а не при его запуске.Учитывая обсуждение в ошибке Fedora № 246267 , кажется, что этот параметр также применялся при запуске, но он был удален, потому что он приводил к сбою X-сервера на большом количестве оборудования: X-серверу требуется доступ к видео аппаратное при его запуске.

Следующим лучшим вариантом было бы дать короткое мерцание другому vt и переключиться обратно. В Linux вы можете использовать openvt , чтобы запустить команду в новом виртуальном терминале, и chvt , чтобы вернуться назад.

Создайте сценарий ~ / .xinitrc.chvt , содержащий

#!/bin/sh
echo "New X session running on vt$X_FGCONSOLE" >"$ORIGINAL_TTY"
chvt "$ORIGINAL_FGCONSOLE"
exec ~/.xinitrc

, и запустите

ORIGINAL_FGCONSOLE=$(fgconsole) ORIGINAL_TTY=$(tty) openvt -s -- sh -c 'export X_FGCONSOLE=$(fgconsole); startx ~/.xinitrc.chvt -- vt$X_FGCONSOLE'

(отдельный сценарий ~ / .xinitrc.chvt вместо sh -c… необходим, потому что startx испортил аргументы, содержащие подстановочные знаки, и вам нужно передать абсолютный путь из-за другой причуды startx. В качестве альтернативы, вызовите xinit напрямую и установите вверх XAUTHORITY самостоятельно.)

В зависимости от того, где вы запускаете этот скрипт, у вас может не быть разрешения на запуск fgconsole («Не удалось получить дескриптор файла ссылаясь на консоль »), потому что он должен иметь возможность открывать / dev / console , а он не может этого сделать, если им владеет другой пользователь (на практике root). Я не знаю, как узнать, как в противном случае вернуться к исходной консоли.Одним из решений, если у вас есть root-доступ, было бы заменить ORIGINAL_FGCONSOLE = $ (fgconsole)… на

ORIGINAL_FGCONSOLE=$(sudo fgconsole)

и дать вашей учетной записи разрешение на запуск fgconsole как root, запустив visudo и добавив строку

zzy ALL = (root) NOPASSWD: /bin/fgconsole

после любой другой строки, относящейся к вашей учетной записи. Безопасно исключить ошибку в программе fgconsole .

¹ Если вы используете Linux, вы используете X.org, а если вы не используете Linux, есть еще хорошее изменение в том, что вы используете X.org.

45
24.07.2016, 20:12
2 ответа

Я пришел сюда, потому что у меня был тот же вопрос. В конце концов я понял, что для моей цели в любое время, когда я могу использовать что-то вроде «шаг -из» цикла, я могу просто установить другую точку останова после цикла, а затем позволить программе continueзавершить цикл и запустить точку останова. потом. Извините, если это очевидно для большинства людей, но, вероятно, это полезно для тех, кто ищет ответ на этот вопрос.

3
27.01.2020, 19:34

Использовать команду «Готово»; иногда это делает то же самое, что и «выйти -наружу». Это завершит то, что делает стек (функция, обычно ), и перейдет к следующей строке после этого. Найдите команду для получения дополнительной информации.

5
27.01.2020, 19:34

Теги

Похожие вопросы