caffe目錄:
├── build -> .build_release // make生成目錄,生成各種可執行bin文件,直接調用入口;
├── cmake
├── CMakeLists.txt
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── data
├── distribute
├── docker
├── docs
├── examples //很多demo可以嘗試使用;
├── include
├── INSTALL.md
├── LICENSE
├── Makefile
├── Makefile.config
├── Makefile.config.example
├── matlab
├── models
├── python
├── README.md
├── scripts
├── src // src/caffe/solver.cpp,net.cpp,layer.cpp,blob.cpp等核心函數;
└── tools //主要使用caffe.cpp,進行調用src下面各個子函數;另外tools/extra下提供一些輔助函數
1. 使用gdb直接調試工程
配置參考:Caffe源碼調試
主要打開:修改Makefile.config:DEBUG := 1 ;生成如下目錄:
lrwxrwxrwx 1 root root 12 1月 3 16:37 build -> .build_debug/ drwxr-xr-x 12 root root 4096 1月 3 16:37 .build_debug/ drwxr-xr-x 12 root root 4096 1月 3 16:37 .build_release/
使用GDB啟動調試,執行gdb --args build/tools/caffe train --solver examples/mnist/lenet_solver.prototxt ;可以直接調試;
rjw@rjw:~/caffe$ gdb --args build/tools/caffe train --solver examples/mnist/lenet_solver.prototxt GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from build/tools/caffe...(no debugging symbols found)...done. (gdb) (gdb) q
2. 使用Vscode進行調試:
配置c_cpp_properties.json 和launch.json ;
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/tools/caffe", "args": ["train","--solver","${workspaceFolder}/examples/mnist/lenet_solver.prototxt"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
- 查看函數調用流程;caffe.cpp(main)->solver.cpp->sgd_solverc.pp->data_layer.cpp
