在emacs gdb中调试时更改工作目录?

时间:2016-11-16 12:26:55

标签: emacs gdb caffe

当我打开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以消除上面报告的错误吗?

2 个答案:

答案 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