Отладка с использованием блоков кода и пользовательской сборки (Boost.Build) - PullRequest
1 голос
/ 12 ноября 2009

Я уже некоторое время использую Code :: Blocks с MinGW на коробке WinXP. Но так как я начал использовать Boost.Build в качестве «инструмента пользовательской сборки», у меня возникли проблемы с установкой точек останова из Code :: Blocks. Когда я запускаю сеанс отладки, Code :: Blocks пытается отправить все точки останова в GDB, но GDB, похоже, не распознает имена файлов источников:

Debugger name and version: GNU gdb 6.6
No source file named C:/xxx/CB-Workspace/altomo/src/main.cpp.
Breakpoint 1 ("C:/xxx/CB-Workspace/altomo/src/main.cpp:185) pending.

(ххх - только сокращение)

Чтобы посмотреть, что происходит, я запустил GDB вручную и попытался установить точку останова:

(gdb) break main.cpp:181
Breakpoint 1 at 0x40231e: file src/main.cpp, line 181.
(gdb) break src/main.cpp:182
Breakpoint 2 at 0x402331: file src/main.cpp, line 182.
(gdb) break "C:/xxx/CB-Workspace/altomo/src/main.cpp:185"
Breakpoint 3 at 0x402513: file src/main.cpp, line 185.

Кажется, все в порядке. Я также убедился, что во всех файлах * .o указан полный путь.

Странно то, что отладка работала до того, как я переключился на Boost.Build. Так что я не знаю, где искать. Кто виноват? Я, Boost.Build, Code :: Blocks или GDB? Я пропустил некоторые очевидные опции компилятора или настройки проекта CB w.r.t. пути поиска или что-то?

Я бы хотел продолжать использовать Boost.Build в качестве инструмента для сборки и Code :: Blocks для редактирования и в качестве внешнего интерфейса GDB. Любая помощь в решении этой проблемы приветствуется.

Ответы [ 2 ]

1 голос
/ 13 ноября 2009

Я включил журнал отладки Code :: Block, чтобы увидеть, какие команды передаются в GDB, и, похоже, проблема в Code :: Blocks. Отправляет

directory C:/XXX~1/CB-WOR~1/altomo

команда для GDB, которая является именем каталога "DOS-mangled". GDB это не нравится. Итак, для меня это выглядит как ошибка в Code :: Blocks.

0 голосов
/ 13 ноября 2009

Попробуйте это:

(gdb) break main.cpp:185

Если GDB тоже не знает main.cpp, то Boost.Build не создает отладочную версию.
Скорее всего, Boost.Build не использует абсолютные имена путей при компиляции источника.

...