我有一个32位的桌面,我的emacs副本正在那里运行。
我希望能够调试在精简版qemu 64位虚拟机上运行的程序。
虚拟机有一个ssh端口24054,可以让我无密码地访问根目录,而且它确实安装了gdb。
它有我的桌面调用的目录~/mco/chip_test安装为/9p
因此,如果我在~/mco/chip_test中创建一个hello.c文件,然后转到VM将在其中运行的64位计算机,并使用进行编译
$gcc-o你好-g你好.c
然后启动虚拟机,在我的32位桌面上运行
ssh-24054美元root@anvil'cd/9p&;gdb/你好,
然后gdb在我桌面上的一个窗口中以命令行模式完美运行。
所以现在我当然希望它在emacs下运行,因为命令行gdb有点难以读取,我希望看到我的光标在文件中移动,并有带有监视变量等的窗口
所以我尝试了M-x gdb运行gdb(如下(:ssh-p 24054root@anvilcd/9p&;gdb-注释=3/你好
我在emacs中打开了一个调试器窗口,一切看起来都很好,事实上,我甚至可以通过单击本地emacs中~/meco/chip_test/hello.c文件的边缘来设置和删除断点,该文件与gdb所看到的/9p/hello.c文件相同,但移动的光标不会出现或四处移动,所以整个过程相当无用。
因此,我认为emacs/Gud没有完全意识到~/myco/chip_test/hello.c是调试器认为是/9p/hello.c的文件,尽管显然发生了一些有趣的事情,因为我可以设置断点,所以我想知道是否有办法让一个或另一个程序在循环中翻译文件名,以便一切正常。
有什么想法吗?还是我只是做错了?
如果你选择,你会得到更好的结果
- 在中的
/home/<user>/myco/chip_test
上安装/home/<user>/myco/chip_test
VM(因此源路径完全匹配(,或者 - 在VM中运行
gdbserver
,并将本地GDB连接到它