Могу ли я использовать локальные исходные файлы в другом каталоге, в то время как я использую gdb поверх ssh в emacs? - PullRequest
1 голос
/ 17 октября 2011

У меня 32-битный рабочий стол, на котором запущена моя копия emacs.

Я бы хотел иметь возможность отлаживать программу, работающую на очень урезанной 64-битной виртуальной машине qemu.

Виртуальная машина имеет ssh-порт 24054, который дает мне root-доступ без пароля, и на нем установлен gdb.

И у нее есть каталог, который мой рабочий стол вызывает ~ / myco / chip_test, смонтированный как /9p

Итак, если я сделаю файл hello.c в ~ / myco / chip_test, перейдите на 64-битную машину, на которой будет работать виртуальная машина, и скомпилируйте ее с помощью:

$ gcc-o hello -g hello.c

, затем запустить виртуальную машину, и на моем 32-разрядном рабочем столе запустить

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

Тогда gdb отлично работает в режиме командной строки в окне на моем рабочем столе.

Так что теперь, конечно, я хочу, чтобы он работал под emacs, потому что командная строка gdb немного сложначитать, и я хотел бы, чтобы мой курсор шел по файлу и имел окна с переменными наблюденияи т.д.откройте окно отладчика в emacs, и все будет выглядеть правильно, на самом деле я даже могу установить и удалить точки останова, щелкнув по окантовке файла ~ / myco / chip_test / hello.c в моем локальном emacs, который является тем же файлом, что иGDB выглядит как /9p/hello.c, но движущийся курсор не появляется и не перемещается, поэтому все это совершенно бесполезно.

Так что я думаю, что emacs / Gud не совсем понимает, что ~/myco/chip_test/hello.c - это файл, который отладчик считает /9p/hello.c, хотя очевидно, что происходит нечто интересное, поскольку я могу устанавливать точки останова, и поэтому мне интересно, есть ли способ получить ту или иную программув цикле, чтобы перевести имена файлов так, чтобы все просто работало.

Есть идеи, или я просто ошибаюсь?

1 Ответ

1 голос
/ 17 октября 2011

Вы получите гораздо лучшие результаты, если либо

  • смонтировать /home/<user>/myco/chip_test на /home/<user>/myco/chip_test в ВМ (так что исходные пути точно совпадают), либо
  • запуститеgdbserver в виртуальной машине и подключите к ней локальную GDB.
...