проблема отладки с Code :: Blocks в Ubuntu с использованием gdb - PullRequest
1 голос
/ 25 октября 2009

Я только начал программировать на C ++, сначала в MS Visual C ++, затем в Code :: Blocks.

Проблема в том, что на моем компьютере, на котором запущена Ubuntu, Code :: Blocks "из коробки" не отлаживается, даже по умолчанию "hello world", он просто пропускает все точки останова и завершает работу программы.

У меня есть виртуализированная машина с Windows, использующая Sun VirtualBox, и окно Code :: Blocks, которое я помещаю туда, отлично работает "из коробки"!.

программа в Ubuntu, показывает это, когда я пытаюсь отладить: Не удается найти члена пространства имен, класса, структуры или объединения с именем "a / b / c" где a / b / c - путь к той программе, которую я строю.

вот что появляется в журнале отладчика:


Здание для обеспечения актуальности источников
Сборка выполнена успешно
Выбор цели:
Отладка
Добавление источника dir: / home / arnau / Documents / UNI / compus / Code :: Blocks / opo /
Добавление источника dir: / home / arnau / Documents / UNI / compus / Code :: Blocks / opo /
Добавление файла: bin / Debug / opo
Запуск отладчика:
сделано
Зарегистрирован новый тип: wxString
Зарегистрирован новый тип: STL String
Зарегистрирован новый тип: STL Vector
Установка точек останова
Имя и версия отладчика: GNU gdb 6.8-debian

Не удается найти члена пространства имен, класса, структуры или объединения с именем "/home/arnau/Documents/UNI/compus/Code::Blocks/opo/main.cpp:8"
Подсказка: попробуйте '"/home/arnau/Documents/UNI/compus/Code::Blocks/opo/main.cpp:8 or'" / home / arnau / Documents / UNI / compus / Code :: Blocks / opo / main .cpp: 8
(Обратите внимание на первую одинарную кавычку.)
Программа вышла нормально.
Отладчик завершен со статусом 0


Спасибо за ваше время, я очень ценю это.

Арнау, из Барселоны

1 Ответ

4 голосов
/ 25 октября 2009

Ваше имя исходного каталога: .../Code::Blocks/... наиболее неудачно.

Хотя UNIX допускает любой символ в имени файла, кроме '/' и NUL, неразумно использовать ':', потому что это разделитель PATH, и вы не сможете добавить, например, /home/arnau/Documents/UNI/compus/Code::Blocks/opo к вашему PATH.

В GDB есть два дополнительных значения ':' - разделитель между именем файла и номером строки (или именем функции), и '::' в качестве индикатора области (необходим для обработки C++).

Резюме: переименуйте каталог "Code::Blocks" в codeblocks и живите долго и счастливо.

...