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

Change the working directory when debug in emacs gdb?

当我打开 emacs 并输入 :

M+x gdb

Run gdb (like this): gdb im=mi /home/qinchen/major/caffe/caffe_gdb/build/tools/caffe

然后输入:

run train --solver=examples/mnist/lenet_solver.prototxt

但它报告: 我

o.cpp Check failed: fd!=-1. file not found:examples/mnist/lenet_solver.prototxt

我猜是不是emacs的当前工作目录不在CAFFE_ROOT中触发的错误。因为当我在 CAFFE_ROOT 目录中的 linux 终端中使用

进行调试时

gdb --args build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt

我可以成功调试这个 demo.So 谁能帮我在 gdb 中调试时将 emacs 工作目录设置为 CAFFE_ROOT 以消除上面报告的错误?

简单:

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

我个人觉得复制和粘贴我的可执行文件的绝对路径很烦人,所以我通常只是 运行 这样:

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

更好的是,如果您使用 Projectile,您可以使用项目根目录作为 CWD 执行 projectile-run-gdb(或 C-c p x g)到 运行 gdb。这样你就可以通过:gdb -i=mi build/tools/caffe。这对我来说非常方便,因为我的 build 目录通常在我的项目根目录中。

如果你不使用射弹,在 gdb 界面中,做 pwd 会告诉你你在哪里。我通常需要 cd 一次或两次才能到达我想要进入的工作目录。然后只需执行 file build/tools/caffe 打开文件进行调试,你就可以开始了。

将 paths/args 粘贴或编辑到迷你缓冲区中可能会让我很生气。这样我就 运行 它,更改一两个目录,然后像在控制台中一样使用相对路径。