我正在尝试使用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机器上工作。
1条答案
按热度按时间oxalkeyp1#
我只是从源文件安装了hdf5。在配置安装时,我打开了
--enable-build-mode
和--enable-symbol
开关。Hdf5对szip有依赖性,我也是从源代码安装的。我的具体配置如下:上面的解决方案起作用了,我能够使用
h5c++ hdf5.cpp
编译我的h5应用程序,并使用gdb调试它。