参考:
http://blog.csdn.net/xiaoyezi_1834/article/details/50724875

https://www.zhihu.com/question/27987666

自己苦于需要修改caffe代码和调试代码,找寻方法找了很久
-> 总结如下:qt creator/anjuta/gdb

如下都是博主亲身试验成功的例子,将成功的方法转载和借鉴于此,可以实现单步调试caffe代码

方法一:在Qt中调试caffe代码

1.QT creator-> file->open file or project ->  $caffe_root/CMakeLists.txt 文件 

revise the  CMake arguments: -DCMAKE_BUILD_TYPE = Debug
and the Build directory choose : /home/wenyangming/$caffe root

recommendation :  use $ cafferoot dir


出现如下页面,或者出现需要设置指定重新build的目录界面 一般只需要勾选Debug和Release两种模式即可,点击配置项目configure project,会自动弹出cmake界面,(此时默认为第一个勾选的模式的默认参数,如此处为debug模式)

点击run cmake 目的是为了check cmake的dependency和环境是否正确
点击finish
然后在QT里面左下角选择debug模式,(如果刚才打开是没有在debug模式,可能需要再次执行cmake 注意-DCMAKE_BUILD_TYPE=Debug)然后点击锤子进行编译
编译通过后

设置断点和命令


以mnist训练为例,编译完成后在左下角caffe-》debug-》run下选择caffe.bin为执行程序,再在projects选项卡/Run里面配置
arguments:train --solver=/home/wenyangming/caffe/examples/mnist/lenet_solver.prototxt -> 与你的工作目录一致Working directory
means that you(./examples) .@caffe root dir  (separate with the build root/ the caffe will run on default direction<see the following snapshot>)

-> 相当于在gdb调试中的 set args 有兴趣可以去参考本博另一篇通过gdb来实现调试
(此页面还可以根据需要改变工作目录)   -> 具体修改在projects中的method 可add选择并设置自己的build.

The folder which have the ".d" means you have successly built

ATTENTION:

次编译程序的时候出现了“no executable specified”的错误而无法运行程序。解决办法:

在用QT creator打开project之前,删除CMakeLists.txt.user文件重新编译/RELOAD,然后运行程序,可以成功。

方法二:

QT creator->open project->import project->import existing project导入现有工程后也可以在qt中调试

类似anjuta的调试方式

----------------------Anjuta调试 ---------------------------------------

1、编译debug模式的Caffe

首先要先将Caffe编译成debug模式,即需要将Makefile.config中"DEBUG := 1"前面的注释去掉再进行重新编译,这样就能得到Caffe版本就能够调试。

(注意如果使用qtcreator 需要设置debug参数为-DCMAKE_BUILD_TYPE=Debug 将工程重新在一处重新编译,而使用anjuta相当于gdb调试的改良版本)

2、安装IDE

要调试的话也需要一个IDE,经过这两天的摸索找到了一个比较满意的IDE:Anjuta。Anjuta在Ubuntu下的安装方法为:

sudo apt-get install anjuta

3、导入caffe

安装完后打开Anjuta,然后导入Caffe项目工程,具体步骤为:

(1)import an existing project

(2) import from folder

(3)下拉选择caffe根目录,并点击打开,import。

(4)可用插件,选择默认就好。

4、设置断点

然后打开需要调试的代码文件,使用设置断点按钮(菜单栏最后面一个红绿黄的按钮)进行断点设置。

5、配置程序参数

点击“运行 -> 程序参数”,以调试训练mnist为例:

(1)在Program一栏中,选择右边的打开按钮,然后选择文件夹caffe/build/tools/下的caffe可执行文件。

(2)对于Arguments一栏,
填入参数:train --solver=examples/mnist/lenet_solver.prototxt,然后点击“应用”

点击“运行 -> 程序参数”,以调试训练mnist为例:

(1)在Program一栏中,选择右边的打开按钮,然后选择文件夹caffe/build/tools/下的caffe可执行文件。

(2)对于Arguments一栏,填入

然后点击“应用”

6、开始调试

点击“运行 -> 调试程序”

使用调试快捷键:F5(单步跨入函数)、F6(单步跨过函数)、Shift+F5(单步跨出函数)进行调试。当然,也可以设置调试器命令的。

试Caffe代码的截图(左下方可以查看变量的值等,右下方是程序的运行结果)

Linux下如何使用qt和anjuta来单步调试caffe的代码相关推荐

  1. linux下打包C++ Qt可执行程序出现的问题总结

    linux下打包C++ Qt可执行程序 零.问题描述 一.出现的问题和解决方法 二.通过配置脚本设置环境变量 零.问题描述 最近在搞linux下打包程序,由于使用了Qt相关的函数接口,出现了很多Qt相 ...

  2. linux程序运行段错误,Linux下的段错误产生的原因及调试方法

    Linux下的段错误产生的原因及调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来 说,段错误就是指访问的内存超出 ...

  3. Linux下不使用qt自带sleep,Linux下Qt多线程编程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:武汉华嵌嵌入式培训中心 技术部 以下和大家分享Linux平台下Qt两种多线程编程的方式: 1.使用Linux平台下的线程函数.以下是给出的代码片段: ...

  4. Hello Qt(在Linux下编写运行Qt程序)

    From: http://www.yafeilinux.com/?p=763 <一>Hello Qt小试牛刀! 说明:我们需要在Linux下已经安装了Qt. 1.下面是整个程序的详细介绍: ...

  5. Linux 下socket通信终极指南(附TCP、UDP完整代码)

    linux下用socket通信,有TCP.UDP两种协议,网上的很多教程把两个混在了一起,或者只讲其中一种.现在我把自己这两天研究的成果汇总下来,写了一个完整的,适合初学者参考,也方便自己以后查阅. ...

  6. Linux下的段错误产生的原因及调试方法-转

    分类: Linux--Ubuntu入门级 重学C/C++2011-10-19 22:13 332人阅读 评论(0) 收藏 举报 因为你调用了glibc的fputs 检查你传进去的char* +++++ ...

  7. linux at24c 前几个字节错误,Linux下的段错误产生的原因及调试方法

    简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由 ...

  8. linux 捕获sigsegv信息如何生成core文件,[转]Linux下的段错误产生的原因及调试方法Core Dump...

    简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由 ...

  9. linux java 段错误的是,Linux下的段错误产生的原因及调试方法 转

    1楼 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个 ...

  10. 详细介绍了Linux下配置文件的读取方法及fgyhtrh读取操作的C代码实现

    认识指针数组和数组指针从内存方面分析 Linux具有免费.可靠.安全.稳定.多平台等特点,因此深受广大程序员的欢迎.  为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际 ...

最新文章

  1. 河北单招计算机英语,2019年河北高职单招英语联考试题
  2. 适配器在JavaScript中的体现
  3. CIKERS Shane 20190611
  4. Redis 作为缓存服务器的配置
  5. 看到一个有趣的东东。
  6. 我不信奉Scrum,我信奉敏捷
  7. java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式
  8. maven 多仓库和镜像设置
  9. [bzoj1500 维修数列](NOI2005) (splay)
  10. 远程会议总卡顿?8 个“小白”办法一看就会!
  11. iOS的一些小技巧[转]
  12. 吉大c 语言程序设计奥鹏作业,吉大18秋学期《C语言程序设计》在线作业一答案...
  13. 企业架构之道(一)之企业信息化建设
  14. STM32-GPRS模块连接系统主站
  15. 笔记本电脑键盘个别键失灵的修复方法
  16. API的理解和使用——全局命令
  17. android studio图形验证码,android 一行代码,快速实现图片验证码(附android studio 版小demo)...
  18. 使用tps5430制作正负DC-DC降压电源,tps7a47和tps7a33制作正负LDO线性电源
  19. 钉钉中添加回调监听事件
  20. 如何把图片缩小到30k?怎么压缩图片体积大小?

热门文章

  1. 毕业论文系列-公式编号-等号对齐及编号
  2. stm8用什么软件编程?stm8开发环境搭建手把手教程!
  3. 洛谷题单-【算法1-5】贪心
  4. oracle8i odac for c,ODAC112021Xcopy for 32位
  5. Wolf从零学编程-用Python打造简单加密程序(一)
  6. 技术研发团队管理计划方案书
  7. win10系统计算机物理地址,Win10如何修改物理地址?Win10修改网卡物理地址(MAC)的两种方法...
  8. 蔡学镛谈Java学习
  9. 牛课网--直通BAT面试算法精讲课--送优惠码啦
  10. 物联网项目设计(一) 需求分析与概要设计