当我打开emacs并输入:
M + x gdb
运行gdb(像这样):gdb im = mi /家庭/ qinchen /大/朱古力/ caffe_gdb /编译/工具/朱古力
然后输入:
run train --solver = examples / mnist / lenet_solver.prototxt
但它报告说: 我
o.cpp检查失败:fd!= - 1。文件没有 实测值:实施例/ MNIST / lenet_solver.prototxt
我想如果错误是由emacs'当前工作目录不在CAFFE_ROOT中。因为我在CAFFE_ROOT目录中使用
在linux终端中调试gdb --args build / tools / caffe train --solver =实例/ MNIST / lenet_solver.prototxt
我可以成功调试这个demo。任何人都可以帮我在gdb中调试时将emacs工作目录设置为CAFFE_ROOT以消除上面报告的错误吗?
答案 0 :(得分:1)
我个人觉得它很讨厌将绝对路径复制并粘贴到我的可执行文件,因此我通常以这种方式运行它:
M+x
然后gdb
,并使用默认命令gdb -i=mi
更好的是,如果您使用Projectile,则可以执行projectile-run-gdb
(或C-c p x g
)运行以项目根目录为CWD的gdb。这样,您就可以通过:gdb -i=mi build/tools/caffe
。因为我的build
目录通常位于项目根目录中,所以这对我来说非常方便。
如果不使用投射物,则在gdb界面中,执行pwd
会告诉您您的位置。通常,我只需要cd
一到两次就可以进入我想进入的工作目录。然后只需执行file build/tools/caffe
即可打开文件进行调试,然后就可以开始了。>
将路径/参数粘贴或编辑到迷你缓冲区中可能会让我感到恼火。这样,我就可以运行它,更改一个或两个目录,并像在控制台中一样使用相对路径。
答案 1 :(得分:0)
简单:
M+x gdb
gdb -i=mi -cd /home/qinchen/major/caffe/caffe_gdb --args build/tools/caffe train --solver=examples/mnist/lenet_solver.prototx