我有一个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的文件,虽然显然有些有趣的事情发生,因为我可以设置断点,所以我想知道是否有办法让循环中的一个或另一个程序翻译文件名,以便一切正常。
任何想法,或者我只是这样做错了?
答案 0 :(得分:1)
如果你
,你会得到更好的结果/home/<user>/myco/chip_test
上安装/home/<user>/myco/chip_test
VM(因此源路径完全匹配)或gdbserver
,并将本地GDB连接到它。