CodeLLDB¶
Языки: Rust, C, C++ · Транспорт: TCP
Запись каталога:
[adapters.codelldb]
id = "codelldb"
command = "codelldb"
tcp_argument = "--port={port}"
transport = { tcp = { host = "127.0.0.1" } }
Bugsaur выбирает свободный порт, передаёт его как --port=<порт> и подключается
к 127.0.0.1.
Установка¶
Поставьте CodeLLDB и выведите бинарник в
PATH:
Если он пришёл из Mason:
Проверка¶
Если команда отработала, адаптер установлен. Если сессия всё равно не стартует,
значит его не видит отладчик — проверьте PATH того окружения, в котором
запускается Bugsaur, а оно не обязательно совпадает с вашим шеллом.
Сборки нет¶
В каталоге у CodeLLDB нет записи build, поэтому Bugsaur для него ничего не
собирает: адаптер получает уже существующий бинарник. Для Rust это означает
сначала cargo build, для C и C++ — вашу собственную команду сборки.
program в профиле — это собранный бинарник, а не исходник и не каталог.
Собирать с отладочной информацией¶
В оптимизированном бинарнике отладчику работать почти не с чем: переменные читаются как вырезанные оптимизатором, фреймы заинлайнены, точки останова попадают на неожиданные строки.
- Rust: отлаживайте debug-сборку, а не
--release. - C / C++:
-g -O0.
Подключение к процессу¶
[profiles.attach]
adapter = "codelldb"
program = "build/app"
mode = "attach"
[profiles.attach.launch_arguments]
pid = 4242
Настройки самого адаптера¶
Всё, что CodeLLDB принимает, но чему нет поля в схеме профиля, передаётся через
launch_arguments без изменений:
Bugsaur их не интерпретирует — смысл принадлежит CodeLLDB. Полный список ищите в его документации.
Диагностика¶
| Симптом | Причина | Что делать |
|---|---|---|
| Сессия не стартует | codelldb не виден через PATH |
проверьте command -v или задайте adapter_command |
program is not readable |
бинарник не собран | соберите сначала |
| Переменные показаны как вырезанные оптимизатором | release-сборка | пересоберите в debug, -g -O0 |
| Точки останова не привязываются | неисполняемые строки или нет отладочной информации | Точки останова не срабатывают |
| Нет исходника у ваших собственных фреймов | пути изменились после сборки | Исходник не найден |