Как установить точку останова 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
Другие вопросы по тегам