在emacs中使用gdb over ssh时,可以在不同的目录中使用本地源文件吗?

时间:2011-10-16 20:32:17

标签: emacs gdb gud

我有一个32位桌面,我的emacs副本正在运行。

我希望能够调试在非常简单的qemu 64位虚拟机上运行的程序。

虚拟机有一个ssh端口24054,它为我提供无密码的root访问权限,并且安装了gdb。

它有我的桌面调用的目录〜/ myco / chip_test挂载为/ 9p

所以如果我在〜/ myco / chip_test中创建一个hello.c文件, 然后转到运行VM的64位机器,并使用:

进行编译

$ gcc -o hello -g hello.c

然后启动虚拟机,并在我的32位桌面上运行

$ ssh -p 24054 root @ anvil'cd / 9p&& gdb ./hello'

然后gdb在我桌面的窗口中以命令行模式运行完美。

所以现在我当然希望它在emacs下运行,因为命令行gdb有点难以阅读,我想看到我的光标单步执行文件,并且有带监视变量的窗口等等

所以我尝试使用M-x gdb 运行gdb(像这样):ssh -p 24054 root @ anvil cd / 9p&& gdb --annotate = 3 ./hello

我在emacs中得到一个调试器窗口,一切看起来都正确,实际上我甚至可以通过点击本地emacs中〜/ myco / chip_test / hello.c文件的边缘来设置和删除断点,这是与gdb看作/9p/hello.c的文件相同,但移动光标不会出现或移动,所以整个过程都没用。

所以我认为emacs / Gud并没有意识到〜/ myco / chip_test / hello.c是调试器认为是/9p/hello.c的文件,虽然显然有些有趣的事情发生,因为我可以设置断点,所以我想知道是否有办法让循环中的一个或另一个程序翻译文件名,以便一切正常。

任何想法,或者我只是这样做错了?

1 个答案:

答案 0 :(得分:1)

如果你

,你会得到更好的结果
  • /home/<user>/myco/chip_test上安装/home/<user>/myco/chip_test VM(因此源路径完全匹配)或
  • 在VM中运行gdbserver,并将本地GDB连接到它。