Я использую 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 корректно обрабатывать убиваемый процесс.