我可以使用本地源文件调试在我有ssh访问权限的远程目标上运行的程序吗?
假设我的家用机器上的目录/home/jla/hello
中有一个名为hello.c的程序。
在远程计算机上,我将同一个文件放在目录/ hello中,然后用它编译
$ gcc -g -o hello hello.c
,然后删除远程hello.c,但保留可执行文件。
我可以在本地运行gdb,让它进入远程机器运行可执行文件,但是使用本地源作为参考吗?
注意:
令人讨厌的是,远程机器非常简单,无法更改。它有gdb,但它没有gdbserver
请注意,本地和远程计算机具有不同的体系结构。在这个特殊情况下,64位和32位英特尔
我真正想做的是在emacs / gud下运行它。但这将是一个很好的开始。
答案 0 :(得分:3)
远程和本地机器的架构非常重要。重要的是如何构建hello
,gdb
和gdbserver
。
从您的描述中可以看出hello
是在x86_64-linux-gnu
这意味着您需要x86_64-linux-gnu
gdbserver
,以及能够调试x86_64
二进制文件的32位GDB。您应该能够构建两者,将gdbserver
复制到远程计算机,然后“正常”调试。