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

3
当我打开emacs并输入以下内容时:
M+x gdb
运行gdb(如下所示): gdb im=mi /home/qinchen/major/caffe/caffe_gdb/build/tools/caffe 然后输入:
run train --solver=examples/mnist/lenet_solver.prototxt
但是报错了:
io.cpp Check failed: fd!=-1. file not found:examples/mnist/lenet_solver.prototxt
我猜测这个错误是由于emacs的当前工作目录不在CAFFE_ROOT中引起的。因为当我在linux终端中以CAFFE_ROOT目录调试时,使用以下命令可以成功调试此演示程序。
gdb --args build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
那么有谁能帮助我在gdb中设置emacs工作目录为CAFFE_ROOT,以消除上面报告的错误吗?
2个回答

3

简单:

M+x gdb
gdb -i=mi -cd /home/qinchen/major/caffe/caffe_gdb --args build/tools/caffe train --solver=examples/mnist/lenet_solver.prototx

2

我个人发现复制和粘贴可执行文件的绝对路径非常麻烦,所以我通常会按照以下方式运行:

M+x 然后 gdb 并且使用默认命令运行: gdb -i=mi

更好的方法是,如果你使用Projectile,你可以使用 projectile-run-gdb (或者 C-c p x g) 以项目根目录作为当前工作目录来运行gdb。这样你只需要输入: gdb -i=mi build/tools/caffe。对于我来说这非常方便,因为我的 build 目录通常在项目根目录下。

如果你不使用Projectile,在gdb界面中,做一个 pwd 命令可以告诉你你的位置。我通常只需要 cd 一次或两次就能到达想要的工作目录。然后只需执行 file build/tools/caffe 即可打开文件进行调试。

对于我来说,将路径或参数粘贴或编辑到小型缓冲区中非常令人恼火。这种方法让我只需要运行它,更改一两个目录,并像在控制台中那样使用相对路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接