Кратко — проблема известна, «правильных» вариантов три: 1) установить более свежий LLDB (либо через Command Line Tools 15, либо собрать/взять из Homebrew), 2) подгрузить форматтеры libc++ в текущий lldb, либо 3) отлаживать вне Xcode (в терминальном lldb). Объяснения и пошаговые рекомендации ниже.
1) Проверка текущих инструментов
- Узнать версию Command Line Tools:
pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
- Убедиться, какой путь выбрал xcode-select:
xcode-select --print-path
2) Попробуйте быстрый/безопасный обход (рекомендуется как первый шаг)
- Установите llvm/lldb из Homebrew и используйте lldb в терминале:
brew install llvm
/opt/homebrew/opt/llvm/bin/lldb ./your_binary
Это даст вам более свежий lldb без трогания Xcode/системы. Для диагностики std::string и других контейнеров этот вариант часто решает проблему.
- Можно отлаживать программу в терминале (lldb из Homebrew) вместо встроенного Xcode-отладчика — компилируйте с -g и смотрите значения.
3) Попробуйте (в Xcode) подгрузить форматтеры libc++
Иногда форматтеры (pretty-printers) просто не подгружаются. Найдите скрипты в Xcode и импортируйте их вручную в сессию lldb или в ~/.lldbinit.
Пример (найдите реальный путь на вашей машине):
find /Applications/Xcode.app -name "libcxx.py"
В lldb:
command script import /path/to/libcxx.py
Если это заработало — добавьте ту же команду в ~/.lldbinit, чтобы подгружать автоматически.
4) Обновление Command Line Tools (вопросы совместимости и безопасный порядок действий)
- softwareupdate --list не показывает CLT v15 — это может означать, что Apple не считает ваш набор ОС/установки совместимыми для автоматического обновления, или что CLT v15 не распространяется через this channel для вашей комбинации macOS + Xcode.
- Можно вручную скачать Command Line Tools for Xcode 15 с developer.apple.com/download/all (требуется Apple ID) и попробовать установить. Но предупреждения:
- CLT и Xcode тесно связаны; ставить CLT от Xcode 15 поверх Xcode 14.x может привести к несогласованности инструментов (вроде несовпадения заголовков/штампов).
- Маловероятно, что это «сломает систему», но возможны неожиданные проблемы с сборкой/символьными таблицами. Всегда делайте резервную копию или снимок диска перед экспериментацией.
- Если решите пробовать:
- Удалите старые CLT:
sudo rm -rf /Library/Developer/CommandLineTools
- Установите загруженный .dmg/.pkg (двойной клик или через терминал):
sudo installer -pkg /Volumes/<CLT>/Command\ Line\ Tools.pkg -target /
- Убедитесь, что путь селектится:
sudo xcode-select --switch /Library/Developer/CommandLineTools
- Проверьте работу xcodebuild и gcc/clang.
5) Вариант «построить lldb самому» / установить .xctoolchain
- Можно собрать LLVM/LLDB из исходников и/или поместить в Xcode как кастомный toolchain (.xctoolchain). Это более сложный, но безопасный для Xcode вариант — не трогает системные CLT. Документация на llvm.org и Apple Developer описывает сборку и упаковку в xctoolchain.
6) Обновление macOS (и влияние на производительность)
- Чтобы получить официально поддерживаемый Xcode/CLT 15, обычно требуется более новая версия macOS. Перед обновлением ОС:
- Проверьте поддержку вашего железа и совместимость нужных приложений/драйверов.
- Сделайте полную резервную копию (Time Machine или клон).
- На Intel-машинах крупное обновление macOS обычно не «резко» ухудшает производительность, но могут быть изменения в энергопотреблении/терморежимах. Если компьютер используется только для работы и вы цените стабильность — разумно не спешить с апгрейдом, пока не удостоверитесь, что нужные инструменты/проекты работают.
- Если единственная цель — получить рабочую отладку std::string — попробуйте сначала варианты 2–4 (Homebrew lldb, импорт форматтеров, ручная установка CLT в тестовой среде). Обновление macOS — крайний шаг.
Резюме рекомендаций (порядок действий)
1. Попробуйте lldb из Homebrew (быстро и безопасно).
2. Если хотите оставаться в Xcode — попробуйте вручную подгрузить форматтеры libc++ в lldb.
3. Если нужно именно системное решение — скачайте CLT 15 с Apple Developer и установите в тестовой/резервной среде (удалив старые CLT), но учтите риск несовместимости.
4. Как крайний вариант — обновление macOS и Xcode до поддерживаемых версий.
Если хотите — пришлите вывод pkgutil --pkg-info=com.apple.pkg.CLTools_Executables и путь xcode-select --print-path, я скажу точнее, какие версии у вас стоят и какие варианты совместимы, а также подскажу точные пути к libcxx.py на вашей системе.