【问题标题】:Remote debugging of pure C program with GDB用GDB远程调试纯C程序
【发布时间】:2015-05-25 00:59:59
【问题描述】:

我正在尝试在 Android 设备上远程调试纯 C 程序。 Android 设备(目标)通过 USB 连接到主机。

我所做的是: 从 target 复制以下文件: /system/lib/vendor/lib/system/bin/app_process/system/bin/linker

目标:

  • gdbserverNDK复制到目标设备
  • 发送我要调试的exe
  • 使用./gdbserver :5039 exec 在目标上运行 gdb 服务器
    • 这基本上执行了这个过程,并得到一个pid

主持人:

  • 启用端口adb forward tcp:5039 tcp:5039
  • 已运行:arm-eabi-gcc exec
  • 然后在 gdb 中:
    • set solib-search-path ...,以及我之前从 target 中提取的库
    • target remote :5039

arm-eabi-gcc 可以连接到远程进程,甚至可以继续(c)执行。但是,我无法设置断点。如果这样做,我会收到以下错误: Cannot access memory at address xxx.

我错过了什么吗?

谢谢。

【问题讨论】:

标签: android c android-ndk gdb gdbserver


【解决方案1】:

所以,在host,在gdb shell 中,在指定远程的目标端口之前,我应该输入shared。此命令加载共享符号。

另外,为了编译,我使用了-ggdb

【讨论】:

  • 我不相信-ggdb 有效果。这是 GDB 的人几年前在他们的邮件列表中告诉我的。这可能已经改变了。
  • emm,这样gdb就可以加载调试程序的符号了!
猜你喜欢
  • 2011-09-12
  • 2012-01-03
  • 1970-01-01
  • 2011-11-29
  • 2020-09-21
  • 2010-10-16
  • 2023-03-29
  • 2013-08-22
  • 2013-09-22
相关资源
最近更新 更多