Я пытаюсь использовать GDB для отладки написанного мною приложения C ++ hdf5. Пакет h5, который я использую, был установлен с помощью conda. Команда, которую я использую:
h5c++ hdf5.cpp
Это создает исполняемый файл, который я затем запускаю с помощью gdb следующим образом:
gdb a.out
GDB запускается хорошо. Но когда я добавляю точку останова, используя:
b 10
или любой номер строки, это дает сообщение: Нет строки 10 в файле «init.c»
Когда я нажимаю run, он запускает всю программу одновременно (что мне не нужно) и завершает работу. Команда h5c ++ -show дает следующий вывод:
x86_64-conda_cos6-linux-gnu-c++ -I/i3c/hpcl/sms821/software/tensorflow/anaconda2/include -D_FORTIFY_SOURCE=2 -O2 -g -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/i3c/hpcl/sms821/software/tensorflow/anaconda2/include -fdebug-prefix-map==/usr/local/src/conda/- -fdebug-prefix-map==/usr/local/src/conda-prefix -L/i3c/hpcl/sms821/software/tensorflow/anaconda2/lib /i3c/hpcl/sms821/software/tensorflow/anaconda2/lib/libhdf5_hl_cpp.a /i3c/hpcl/sms821/software/tensorflow/anaconda2/lib/libhdf5_cpp.a /i3c/hpcl/sms821/software/tensorflow/anaconda2/lib/libhdf5_hl.a /i3c/hpcl/sms821/software/tensorflow/anaconda2/lib/libhdf5.a -L/i3c/hpcl/sms821/software/tensorflow/anaconda2/lib -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/i3c/hpcl/sms821/software/tensorflow/anaconda2/lib -L/i3c/hpcl/sms821/software/tensorflow/anaconda2/lib -g -lrt -lpthread -lz -ldl -lm -Wl,-rpath -Wl,/i3c/hpcl/sms821/software/tensorflow/anaconda2/lib
Я думаю, что это связано с компилятором компилятором, который он использует. Я попытался заменить x86_64-conda_cos6-linux-gnu-c ++ моим собственным компилятором g ++ в скрипте h5c ++, но это дает ошибку компоновщика.
Подскажите, пожалуйста, как заставить мое приложение h5 работать с GDB. Должен ли я установить hdf5 из исходного кода, поскольку у меня нет доступа sudo? Я работаю на машине с Linux.
Я просто установил hdf5 из исходных файлов. При настройке установки я включил --enable-build-mode
а также --enable-symbol
переключатели. Hdf5 зависит от szip, который я также установил из исходного кода. Моя точная конфигурация была следующей:
./configure --prefix=<hdf5 install directory> --enable-cxx --enable-build-mode=debug --enable-symbols=yes --enable-profiling=yes --with-szlib=<szip install directory>
Приведенное выше решение сработало, и я смог скомпилировать свое приложение h5, используя h5c++ hdf5.cpp
а также использовать GDB для его отладки.
Других решений пока нет …