为远程调试编译gdb

10

我正在尝试远程调试运行在arm9上的应用程序。

到目前为止,我已经能够交叉编译并在我的设备上执行gdbserver。

  1. 获取gdb(7.2)源代码并解压缩
  2. ./configure --target=arm-none-linux-gnueabi --with-expat=/usr/local/lib/
  3. make
  4. cd gdb/gdbserver
  5. ./configure --host=arm-none-linux-gnueabi
  6. make
  7. tftp gdbserver 到我的设备
  8. 运行并通过gdb连接到设备

gdbserver“似乎”正确启动并附加到我的helloworld应用程序。

当我尝试gdb到远程服务器时,我得到以下提示:
"warning: Can not parse XML target description; XML support was disabled at compile time"

显然,编译没有考虑到expat。我真的不确定如何将expat库路径指定给配置脚本。

2个回答

21

(这是一个旧问题,但我通过谷歌搜索到达了这里)

问题在于缺少 "expat" 库。这很难猜到,因为:

  1. 编译gdb时这个库是可选的
  2. "expat"名称与XML没有明显的联系...

所以安装 "expat-dev"(使用软件包管理器或其他方式),然后重新启动 ./configure。请注意安装 "dev" 版本,因为我们正在重新编译并需要包含文件。

为了更加保险,可以在 ./configure 呼叫中添加 "--with-expat",这样如果找不到 expat,则会停止并显示错误信息。


5
在安装expat-dev之前,我尝试了"--with-expat"选项,但是配置脚本并没有失败。我使用的软件包安装命令是"sudo apt-get install libexpat1-dev"。虽然我没有使用--with-expat选项,但你的答案非常准确。感谢你的帮助! - brad-tot
是的,那确实很令人困惑。我也意识到,当找不到库时,“--with-expat”选项的行为就像被省略了一样。 - Martin Löper

1

不知怎么的,它还是起作用了

另外,请创建一个名为~/.gdbinit的文件

file /home/username/path/to/exec/exec_name
set sysroot /path/to/libraries/running/on/target/device
target remote HOST:PORT
b main

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接