Настроить поведение кнопки остановки / перезапуска отладчика - PullRequest
0 голосов
/ 22 октября 2019

Я использую VS Code для написания и отладки привязки программы на C ++ к libfuse .

К сожалению, если вы уничтожите процесс libfuse с помощью SIGKILL, вам придется использовать sudo umount -f <mountpoint> прежде чем вы сможете запустить программу снова. Это небольшая неприятность, если мне приходится делать это каждый раз, когда я хочу остановить или перезапустить отладку, тем более что мне не нужно проходить аутентификацию для выполнения такой обычной задачи (sudo почему-то необходимо, несмотря на монтирование, выполняемое моим пользователем).

Хотя я думаю, что это в основном ошибка FUSE (он должен изящно восстанавливаться из процесса, который будет некорректно убит и размонтироваться автоматически, а не выходить из каталога с надписью Transport endpoint is not connected), я также думаю, что должен быть способнастроить VS Code (или любую IDE) для запуска некоторой очистки, когда вы хотите прекратить отладку.

Я обнаружил, что ввод -exec signal SIGTERM в консоли отладки корректно размонтирует каталог правильно, остановит процесси сказать VS Code, что он больше не отлаживается (строка состояния меняется с оранжевого на синий). Но я не могу найти способ автоматизировать это. Я попытался использовать файл .gdbinit, вдохновленный этим вопросом :

handle SIGTERM nostop

# This doesn't work as hook-quit isn't run when quitting via MI mode, which VS Code uses...
define hook-quit
    signal SIGTERM
end

Но, как отмечено в связанном вопросе, GDB игнорирует ловушки выхода в режиме MI,и VS Code использует режим MI.

Идеальным решением для меня будет , если бы я мог поместить что-то в файл конфигурации .vscode, сообщая об этом для отправки -exec signal SIGTERM, когда я нажимаю на кнопку остановки илиперезапустите кнопки (а затем дождитесь любого уведомления, которое получит, что отладка остановлена, прежде чем перезапускать, если применимо), но я думаю, что, вероятно, для этого нет возможности.

Даже если кнопки нельзя настроить,Я был бы счастлив иметь возможность связывания клавиш, которая бы просто отправляла -exec signal SIGTERM на консоль отладки без необходимости открывать указанную консоль и вводить команду, хотя палитра команд здесь не показывает ничего полезного (ничего, что выглядиткак будто он отправит указанную команду консоли отладки), поэтому я не ожидаю, что для этого также есть команда привязки.

У кого-нибудь естьЕсть предложения? Или они будут принадлежать как запросы функций на github VS Code? Был бы также признателен любой способ заставить GDB уважать свою ловушку выхода в режиме MI или заставить FUSE корректно обрабатывать убиваемый процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...