无法将gdb与hdf5 c++应用程序一起使用

yqkkidmi  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在尝试使用gdb调试我编写的hdf 5 C++应用程序。我使用的h5包是用conda安装的。我使用的命令是:

h5c++ hdf5.cpp

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

gdb a.out

gdb启动正常。但当我使用以下命令添加断点时:

b 10

或任何行号,它会给出一条消息:* 文件“init.c”中没有第10行 * 当我按下run时,它会立即运行整个程序(这是我不希望的)并退出。h5 c++ -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

我认为这与它所使用的编译器有关。我尝试在h5 c脚本中用我的原生g编译器替换x86_64-conda_cos6-linux-gnu-c++,但这会导致链接器错误。请建议如何使我的h5应用程序与gdb的工作。我应该从源安装hdf 5,因为我没有sudo访问?我在Linux机器上工作。

oxalkeyp

oxalkeyp1#

我只是从源文件安装了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>

上面的解决方案起作用了,我能够使用h5c++ hdf5.cpp编译我的h5应用程序,并使用gdb调试它。

相关问题