如何用gdb调试caffe

本文介绍如何使用GDB进行程序调试,包括设置运行参数、运行环境、工作目录等基础操作,以及如何通过自定义命令简化源代码路径配置。

基础知识:当我们进入gdb的时候,可能需要的指令主要有:

1、程序运行参数。
set args 可指定运行时参数。(如:set args 10 20 30 40 50show args 命令可以查看设置好的运行参数。
2、运行环境。
path <dir> 可设定程序的运行路径。
show paths 查看程序的运行路径。
set environment varname [=value] 设置环境变量。如:set env USER=hchen 
show environment [varname] 查看环境变量。
3、工作目录。
cd <dir> 相当于shell的cd命令。
pwd 显示当前的所在目录。
4、程序的输入输出。
info terminal 显示你程序用到的终端的模式。
使用重定向控制程序输出。如:run > outfile 
tty命令可以指写输入输出的终端设备。如:tty /dev/ttyb

调试的指令很简单:
cd $CAFFE_ROOT,
1. gdb ./build/tools/caffe
2. 设置运行参数 set args train --solver=xxxxsolver.prototxt
3. 设置断点, 比如b solver.cpp:59 , 此时会出现“Make breakpoint pending on future shared library load? (y or [n]) ”, 选择y即可,因为断点设置在.so文件中
4. run 即可


gdb的调试信息中并不包含源码,只是包含了怎样去寻找源码,但是有的时候因为某种原因,比如你的源码转移了位置或者别的原因。你需要告诉gdb到哪里去寻找源码,可以使用dir指令:可参考

要查看当前gdb寻找源码的路径:
show dir
添加一个新的路径到查找路径:
dir  dirname

添加源代码搜索路径的时候,如果路径很长,那么dir 绝对路径很麻烦,那怎么办?
一个很自然的想法就是利用环境变量:1. 利用gdb里定义的变量很简单;2.利用shell中已有的环境变量,需要使用gdb的shell指令,同时我们可以自定义gdb脚本(利用define语法),具体做法如下:
在$HOME下定义一个.gdbinit文件,输入代码:

define load_caffe_src_path
    shell echo "dir $CAFFE_ROOT/src/caffe" > /tmp/tmp.caffesrcpath
    source /tmp/tmp.caffesrcpath
    shell rm /tmp/tmp.caffesrcpath
end

如此,每当我江宁如gdb的时候,只有运行一下自定义命令load_caffe_src_path,即可自动完成源代码查找路径的添加。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值