无法将gdb与hdf5 c++;应用 我试图用GDB调试我编写的HDF5C++应用程序。我使用的h5软件包是使用conda安装的。我正在使用的命令是: h5c++ hdf5.cpp

无法将gdb与hdf5 c++;应用 我试图用GDB调试我编写的HDF5C++应用程序。我使用的h5软件包是使用conda安装的。我正在使用的命令是: h5c++ hdf5.cpp,c++,gdb,g++,conda,hdf5,C++,Gdb,G++,Conda,Hdf5,这将生成一个可执行文件,然后使用gdb运行,如下所示: gdb a.out ./configure --prefix=<hdf5 install directory> --enable-cxx --enable-build-mode=debug --enable-symbols=yes --enable-profiling=yes --with-szlib=<szip install directory> gdb启动正常。但当我使用以下命令添加断点时: b

这将生成一个可执行文件,然后使用gdb运行,如下所示:

gdb a.out
    ./configure --prefix=<hdf5 install directory> --enable-cxx --enable-build-mode=debug --enable-symbols=yes --enable-profiling=yes --with-szlib=<szip install directory> 
gdb启动正常。但当我使用以下命令添加断点时:

b 10
或者任何行号,它都会给出一条消息:文件“init.c”中没有第10行 当我按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
我认为这与它正在使用的编译器有关。我尝试用h5c++脚本中的本机g++编译器替换x86_64-conda_cos6-linux-gnu-c++,但这会导致链接器错误。
请建议如何使我的h5应用程序与gdb一起工作。我应该从源代码安装hdf5吗,因为我没有sudo访问权限?我在Linux机器上工作。

我只是从源文件安装了hdf5。配置安装时,我打开了
--启用构建模式
--启用符号
开关。Hdf5依赖于szip,我也从源代码安装了它。我的具体配置如下:

gdb a.out
    ./configure --prefix=<hdf5 install directory> --enable-cxx --enable-build-mode=debug --enable-symbols=yes --enable-profiling=yes --with-szlib=<szip install directory> 
/configure--prefix=--enable cxx--enable build mode=debug--enable symbols=yes--enable profiling=yes--with szlib=

上述解决方案工作,我可以使用<代码> H5C++HDF5..CPP</代码>编译G5,并使用GDB调试它。< /P>确实是代码> B HDF5.CPP:10 < /Cord>工作?为了使用HDF5与您的本机C++编译器,只需使用<代码> -LHDF5YCPP-LHDF5</代码链接HDF5库。(但如果找不到库,您可能还需要一个适当的

-L
标志)我尝试了以下命令:
g++-lhdf5\u cpp-L/i3c/hpcl/sms821/software/hdf5/hdf5\u pre-build/hdf5-1.8.20-linux-centos7-x86\u 64-gcc485-shared/lib-I/i3c/hpcl/sms821/software/hdf5/hdf5\u pre-build/hdf5-1.8.20-linux-centos7-x86-gcc485-shared/include-hdf5.cpp
它创建了一个警告代码,和许多链接器错误。@aschepler,不。这也不起作用。你必须启用调试符号。你可以通过向
h5c++
添加额外的标志来实现。例如,我会添加
-g-O0
,因为你正在使用GNU编译器。例如
h5c++-g-O0 hdf5.cpp