Clion 调试 Caffe C++ 源码
环境:Ubuntu14.04,Caffe,Clion2017.2
1. Clion - Ubuntu 安装
官网下载 Clion 的 .tar.gz 压缩包
Clion-Linux解压压缩包到当前文件夹
tar -zxvf Clion-2017.2.3.tar.gz
运行安装脚本
cd Clion-2017.2.3 ./bin/clion.sh
根据提示进行安装,创建快捷方式.
2. Clion 调试 Caffe C++ 源码
编译 caffe-master
用 Clion 打开编译后的 caffe-master
配置参数:
在右上角配置
参考设置:
主要是 Executable, Program arguments 和 Working directory 的配置. Apply 应用配置.
设置断点
根据情况,打开需要调试的代码文件,点击相应的代码行左边,设置断点(红色实心圆).
开始调试
点击 Clion 右上角配置旁的蜘蛛状绿色图标,开始调试.
快捷键:
F5 - 运行到断点
F10 - 单步运行
2.1 查看数据
gdb print
命令可以显示被调试的语言中任何有效的表达式.
可以检查各个变量的值:
(gdb) print p (p为变量名)
对程序中函数的调用:
(gdb) print find_entry(1,0)
数据结构和其他复杂对象:
(gdb) print *table_start$8={e=reference=’\000’,location=0x0,next=0x0}
值的历史成分:
(gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值)
whatis 命令可以显示某个变量的类型:
(gdb) whatis ptype = int *
3. 问题解决
3.1 调试出现提示cannot find -lopencv_dep_cudart
解决方案:
点击 CMake —— 左边的设置(绿色齿轮图标) —— 选CMake Settings:
在 Build, Execution, Deployment 设置下的 CMake 页面的 CMake options 处添加参数 -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF,如下:
设置完成后,reload一下 cmake 项目,即可编译通过.
3.2 问题: undefined reference to `cv::applyColorMap(cv::_InputArray const&, cv::_OutputArray const&, int)’
解决方案:
修改 caffe_root/cmake/Dependencies.cmake,添加 contrib
:
# ---[ OpenCV
if(USE_OPENCV)
find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs contrib)
if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found
find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc)
endif()
3.3 undefined reference to `H5LTget_dataset_ndims’
解决方案:
修改 caffe_root/cmake/Dependencies.cmake,添加
# ---[ HDF5
find_package(HDF5 COMPONENTS HL REQUIRED)
include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR})
list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES})
list(APPEND Caffe_LINKER_LIBS ${HDF5_HL_LIBRARIES}) #added
参考
[1] - clion下调试caffe出现提示cannot find -lopencv_dep_cudart
[2] - Linux下Caffe如何调试