在我的嵌入式平台上运行GDB的不同方法

时间:2014-09-24 05:58:49

标签: debugging gdb embedded-linux

我想在我的ARM嵌入式主板上运行GDB ... 我在网上提到我们可以设置GDB服务器并可以进行远程调试,但我仍然缺少为GDB调试设置整个环境的正确步骤..

任何人都可以通过交叉编译GDB来运行我的gdb以便在嵌入式主板上进行调试吗?

我感谢任何输入

4 个答案:

答案 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是文件名选项

希望这会有所帮助!