Как установить точку останова C++ в Eclipse, когда источник скомпилирован с помощью ccache?
В последнее время наша команда разработчиков начинает использовать ccache для более быстрой компиляции (компиляция выполняется из песочницы /usr/x).
Теперь, когда я компилирую из своей песочницы (/usr/y) и пытаюсь установить точку останова в коде в Eclipse (средство запуска процесса GDB (DSF)), он не может найти файл. Дальнейшие исследования показывают, что Eclipse GDB использует полный путь к файлу для установки точки останова (например, b /usr/y/untouchedFile.cpp:1234), но фактический путь (в отладчике GDB) на самом деле / usr/x/untouchedFile.cpp.
Единственное, что работает, - это установить точку останова на консоли, набрав ее, и выполнить сопоставление исходного файла при достижении точки останова.
Я хотел бы установить точку останова, нажав на строку кода (которая раньше работала до ccache).
Мне было интересно, есть ли способ обойти это.
Спасибо!
1 ответ
Эту проблему можно решить путем переназначения отладочной информации.
- Во время компиляции добавьте флаги компиляции:
-fdiagnostics-absolute-paths -fdebug-prefix-map=/usr/y=/usr/x
- Во время отладки добавьте
set substitute-path "/usr/x" "/usr/y"
в ваш gdbinit