我想在我的ARM嵌入式主板上运行GDB ... 我在网上提到我们可以设置GDB服务器并可以进行远程调试,但我仍然缺少为GDB调试设置整个环境的正确步骤..
任何人都可以通过交叉编译GDB来运行我的gdb以便在嵌入式主板上进行调试吗?
我感谢任何输入
答案 0 :(得分:3)
我假设您有一个工具链,可以让您为嵌入式Linux平台构建应用程序。这应该包括gdb(名称类似于arm-linux-gdb)。
接下来检查您的主板的linux是否已包含gdb / gdbserver。如果是这样,您不必构建任何东西。如果没有,请像这样配置gdb:
./path/to/gdb/source/configure --host=arm-linux --target=arm-linux --prefix=/path/to/installation/directory
然后制作并进行安装。 请注意, - host和--target可能会匹配您的工具链前缀。
作为此安装的一部分,您将获得gdbserver。将它安装在你的主板上。
然后按照here的说明使用它。这取决于您的连接类型(TCP,串行),但您需要在板载gdbserver下运行程序(gdbserver binary),然后在PC上运行工具链的gdb并使用“target remote”命令连接到板。
答案 1 :(得分:3)
你看过Buildroot了吗?它将负责交叉编译器和根文件系统。您可以选择编译主机和目标gdb / gdbserver,这样您就可以从一方面获得所有内容。见BR的documentation。
答案 2 :(得分:2)
嵌入式系统的远程调试: 作为服务器,GDB必须编译到调试目标构建中,以支持连接的GDB客户端。在客户端运行时,必须存在目标源的副本以及可执行文件的未剥离(符号)版本。
GCC编译应该使用-g标志。
在目标/服务器端,使用
运行gdbserver <port> --attach <pid> or gdbserver host:<port> <program>
在客户端,运行gdb,然后运行
(gdb) target remote IP:PORT
要运行什么gdb客户端?必须考虑到正确的目标处理器,例如
.../toolchain/bin/powerpc-linux-gdb core/mydaemon/src/mydaemon -x gdb-command-script
-x是文件名选项
希望这有帮助!
答案 3 :(得分:0)
嵌入式系统的远程调试:GDB作为服务器,必须编译到调试目标版本中才能支持连接的GDB客户端。在客户端上运行时,必须存在目标源的副本以及可执行文件的未剥离版本(符号)。
GCC编译应使用-g标志。
在目标/服务器端,运行
gdbserver --attach或gdbserver主机: 在客户端,运行gdb,然后
(gdb)目标远程IP:PORT 要运行什么gdb客户端?例如,必须在构建时考虑到正确的目标处理器
... / toolchain / bin / powerpc-linux-gdb core / mydaemon / src / mydaemon -x gdb-command-script -x是文件名选项
希望这会有所帮助!