问题标签 [gdbserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
537 浏览

c - 使用 gdbserver 进行调试

我正在使用 Netbeans 中的 gdbserver 插件尝试附加到远程调试会话。但是我收到一个错误:“设备的 ioctl 不合适。” 我可以通过从终端启动 gdb 来进行远程调试,但我希望能够使用 Netbeans 进行调试。

0 投票
1 回答
3086 浏览

android - Android调试本机代码“gdb.setup:没有这样的文件或目录”

我已经尝试了将近一周的时间来调试 ndk 示例 hello-jni 的 c 代码,但没有运气。我曾尝试关注许多关于如何做到这一点的教程/博客文章,但同样没有运气。

例如,如果我按照本教程进行操作:http: //mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/,当我运行 ndk-时,我只能进入第 3 步- gdb 它说:“cp:无法统计`.libs/armeabi/gdb.setup':没有这样的文件或目录”

如许多教程中所述,我已注释掉 ndk-gdb 的最后一行。

这是我从 cygwin 运行 ndk-gdb 时得到的:

$ /cygdrive/d/data/klr200/construction/software/local/pc/android-ndk-r8d/ndk-gdb-eclipse --project=/cygdrive/d/data/klr200/construction/software/local/pc/ android-ndk-r8d/samples/hello-jni --verbose --force --adb=/cygdrive/d/data/klr200/construction/software/local/pc/android-sdk/platform-tools/adb.exe

Android NDK安装路径:/cygdrive/d/data/klr200/construction/software/local/pc/android-ndk-r8d
使用具体adb命令:/cygdrive/d/data/klr200/construction/software/local/pc/android -sdk/platform-tools/adb.exe
找到 ADB 版本:Android Debug Bridge 版本 1.0.31
使用 ADB 标志:
使用指定的项目
路径:/cygdrive/d/data/klr200/construction/software/local/pc/android-ndk -r8d/samples/hello-jni
找到包名:com.example.hellojni
ABIs target by application: armeabi
Device API Level: 10
Device CPU ABIs: armeabi
Compatible device ABI: armeabi
using gdb setup init: ./libs/armeabi/gdb 。设置
使用工具链前缀:/cygdrive/d/data/klr200/construction/software/local/pc/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-
使用应用程序输出目录:./obj/local/armeabi
找到可调试标志:true
找到设备 gdbserver:/data/data/com.example.hellojni/lib/gdbserver
找到数据目录:'/data/data/com.example.hellojni'
发现运行 PID: 351
Killing existing debugging session
命令: adb_cmd shell kill -9 496
[1] Killed run-as com.examp...
成功启动 gdbserver。
设置网络重定向
命令: adb_cmd shell run-as com.example.hellojni lib/gdbserver +debug-socket --attach >351
命令:adb_cmd forward tcp:5039 localfilesystem:/data/data/com.example.hellojni/debug-socket
命令:adb_cmd pull /system/bin/app_process obj/local/armeabi/app_process
附加;pid = 351
监听 Unix 套接字调试套接字
16 KB/s(0.329 秒内 5660 字节)
从设备/模拟器中拉取 app_process。
命令:adb_cmd pull /system/bin/linker obj/local/armeabi/linker
48 KB/s(0.786 秒内 39404 字节)
从设备/模拟器中拉出链接器。
命令:adb_cmd pull /system/lib/libc.so obj/local/armeabi/libc.so
77 KB/s(3.468 秒内 273868 个字节)
从设备/模拟器中提取 libc.so。
cp:无法统计`./libs/armeabi/gdb.setup':没有这样的文件或目录

我在任何地方都找不到 app_process(据我所知,这非常重要),如果我查看项目目录.../libs/armeabi,gdb.setup 文件就在那里。

我正在使用:

  • 安卓 NDK r8d
  • 安卓 SDK 21.1
  • 带有 CDT 8.1.1 的 Eclipse Juno
  • 最新的cygwin
  • Windows 7 32 位
0 投票
1 回答
7526 浏览

linux - 使用远程 gdbserver 启动 ddd

我正在使用 ddd 调试在远程目标上运行的程序(例如,远程 gdbserver 在 localhost 上通过端口 1234 运行,但仍充当远程)。

我知道你可以通过打开 ddd 连接到 gdbserver,然后调用 dddtarget remote localhost:1234的 gdb 命令行,如:
http ://www.gnu.org/software/ddd/manual/html_mono/ddd.html#Remote% 20程序

target remote localhost:1234但是,我讨厌每次打开 ddd 时都必须调用该命令,并且我想将其设置为使用别名自动连接到 gdbserver。我尝试运行ddd --rhost localhost:1234 program,但是一旦 ddd 启动一个窗口,提示“GDB 无法启动”,并在 shell 中写道:

sh: 1: exec: localhost:1234: 未找到

任何人都知道如何在启动时附加到远程 gdbserver?

天呐!

0 投票
1 回答
1856 浏览

gdb - gdb/mi gdb 服务器调试

gdb mi 和 gdb server 有什么区别?两者都可以用于本地调试吗?

我在使用 Red Hat 上的 gdb 服务器进行调试时遇到问题。调试启动器在 72 % 处停止。

0 投票
1 回答
74 浏览

gdb - GDB MI:执行时打印或列出代码

有没有办法让 GDB 接口打印或列出当前正在执行的代码。

如何通过 GDB 执行此操作(列出当前正在执行的代码)?

0 投票
1 回答
2313 浏览

variables - 生成线程后 gdb 无法访问变量

在从旧开发板迁移到新开发板(带有 ARM cortex A9 的 iMX6 saber lite 板)后,我正在尝试调试应用程序。我还在主机上运行 gdb 并在开发板上运行 gdbserver,如 __answer__ 部分中所述,如何更改 gdb 在交叉(ARM)调试中使用的运行时库(libc、ld 等)

在尝试运行应用程序并执行创建线程的步骤时,我得到了这个:

之后我无法继续调试执行。如果我只是简单地运行代码(而不是单步执行),我会得到

如果我在要创建的线程中添加一个断点,我将在那里停止执行,但之后继续是不可能的(它也不会退出)。

我读到了线程堆栈大小可能很小的可能性,但它是 8MB,我只是将参数 argv[1](目前为空)传递给线程。

我使用 Linaro gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux 工具链来创建我的应用程序。并且在板上运行(并在调试时使用)的共享库属于 LTIB_201204 rootfs。

感谢您的帮助

0 投票
1 回答
672 浏览

linux - Linux 远程调试线程错误 (GDBServer)

我有一个 ARM 设备,我想调试它。我的主机是 Linux 12.04,我使用的是 Eclipse。GDBServer 在我的目标设备上运行。

我可以调试单进程应用程序。但是当我想调试包含 pthread 对象的多线程应用程序时,调试失败。我一步一步地跑,但当我来到

行调试器给出以下错误“0x40174c84”没有可用的源。

所以我该怎么做?

有什么建议吗?

谢谢。

0 投票
1 回答
135 浏览

gdb - GDB MI:跟随父进程进行调试

在使用 GDB MI 指令时,我发现如果程序分叉创建子进程,它只会开始调试最后一个子进程。因此,如果我尝试在父级中调试中断,则此时它不会中断:

我在 stackoverflow.com 中找到了这个有价值的参考资料:

如何在 gdb 中的 fork() 之后调试子进程?

我的问题是如何设置跟随分叉模式以及通过哪个 GBD MI API?

http://src.gnu-darwin.org/ports/editors/setedit/work/setedit/libmigdb/doc/reference.html

0 投票
2 回答
6421 浏览

gdb - gdbserver 从远程文件加载符号表

我正在尝试使用 gdbserver...
我有一个/user/bin/foo使用 pid 运行的二进制路径的应用程序19767

在远程启动 gdbserver:

在客户端上启动 gdb 并将其连接到删除服务器

在pid上附加gdb

表明:

此外,它显示的当前线程信息不正确。像 info threads 显示 1 thread ,但我的应用程序有 10 个线程 -

如何让 gdb 从远程文件加载符号/user/bin/foo?如何让它显示正确的信息?

0 投票
1 回答
302 浏览

android - Android ndk-gdb 调试成分布式.so

我们有一套“核心”本机代码,将分发给 Android 开发人员,他们可以从中将其链接到他们自己的本机代码。所以Android .apk中有两个.so。为了帮助调试,我们希望能够调试到我们的“核心”.so 当它没有在同一个项目中显式编译时。

澄清。

1) ndk-build NDK_DEBUG=1 在可分发文件中运行。

2) 生成的“核心”.so 包含在我们的依赖项目的 Android.mk 文件中(在本例中为测试应用程序)

3) 我们在测试应用程序上运行 ndk-build NDK_DEBUG=1。

一切都会按要求编译和运行,但我们只能调试到“测试”.so。我对 ndk-gdb 如何使用 libs 文件夹下的 gdb.setup 文件(通过启用 NDK_DEBUG 创建)链接有很高的了解。我目前正在尝试以某种方式将两者都包含在内。

有没有人做过类似的事情?我已经搜索了很多,但没有找到任何结果。我们可以将“测试”项目和“核心”项目的本地方面编译成一个 .so 并调试到任何本地源代码(核心或测试),不幸的是,这不是对我们预期结果的良好测试。

谢谢