问题标签 [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.
ios - 在 iOS 上移植 GDB 服务器
我需要为 iOS 交叉编译一个最新的 GDB 服务器版本(7.4 或 7.5)。默认情况下配置脚本不支持这样的目标(arm-apple-darwin)。但是,我有一个想法,将 Apple 的开源版本的 GDB 服务器(基于相当旧的 GDB 版本)与最新的 GDB 版本合并。有没有人尝试过这种方法?可能有更好的方法吗?
debugging - 是否可以从 gdbserver 获取远程可执行文件名称?
我正在研究图形 GDB 前端,如果我的本地调试器中没有加载可执行文件,我很好奇是否有办法从远程目标获取完整的可执行文件名称。
我可以使用 CLI 或 MI。
arm - gdbserver 共享库
我正在使用 gdb 7.1 开发 ARM 系统(我也尝试过 7.5)。我正在使用这个工具来调试由几个共享库组成的应用程序。
如果我在 ARM 端调试这个应用程序,使用 gdb 7.1 我可以看到共享的加载库(数字化“共享”)。完美的!
我正在尝试在 Windows 主机上使用 gdb for arm 和在 ARM 上使用 gdbserver 远程执行相同的操作。
所以我有:1)windows上的gdb for arm v.7.4.1(我也试过7.3.1)2)arm v.7.1上的gdbserver(我也试过7.5)
在 Windows 上,我可以完美地调试除共享库之外的所有内容:事实上,当我尝试数字“共享”时,它说没有任何共享加载库。我绝对确定至少已经加载了一个库(在手臂一侧,同样的情况也可以正常工作)。
任何想法?
编辑:可能我发现了一些东西:
在 arm 上的 gcc 中,当我要求共享加载库(“share”)时,它调用函数 solib.c:info_sharedlibrary_command 并完全支持 solib。(它工作正常)
相反,当我在 windows 上的 gdb 和 arm 上的 gdbserver 上请求相同的命令时,它传递的命令“qXfer:libraries:read:”不管理任何 solib,只管理 dll!并且 dll 列表显然是空的。
我错过了什么?
gdb - 如何使 gdb 自动附加到远程计算机上的程序名称?
我正在尝试设置我的 gdbinit 以使 gdb 自动附加到远程机器上的某个程序。
我的脚本是这样的:
当然,我的问题是我缺少 $pid。我可以通过运行找到它ssh remotemachine ps | grep myprogram
,但我不确定如何从 gdb 脚本中运行它并将其分配给该$pid
变量。我怎样才能做到这一点?我猜我在这里需要一些 Python ......
eclipse-cdt - Eclipse CDT 4.2 调试远程外部程序
我想调试以使用 GDB 调试远程应用程序。
我的目标系统是一个正在运行的 FreeBSD 8.3 机器gdbserver
。该应用程序已在该框中成功编译。我的 Eclipse CDT 4.2 在安装了最新 MinGW 的 Windows 7 上运行。
这是我要调试的外部程序。它既不是我写的,也不是我的图书馆。我不打算编写自己的程序。在这种情况下,我要调试的是 Subversion 1.8.0-dev。
我创建了一个简单的 C 项目,附上 Subversion 的源代码。创建了一个远程调试配置并将源附加到gdbserver
.
现在,eclipse 进入了main
Subversion 的功能,但是当我在另一个附加的源文件中设置断点时,Eclipse 说:没有命名的源文件ra_loader.c
或者它只是说“没有可用的源”。
然后它只是存在应用程序。
我在这里想念什么?
gdb - 奇怪的 gdbserver 输出显示在我的目标设备上
当我在 uclinux 目标设备 blackfin bfin537/stamp 上运行 gdbserver 时,它工作得很好,但它总是会产生烦人的输出 Request to get for unknown register 232 Request to get for unknown register 236
这是非常烦人的,因为 gdb 客户端的每一步都会在输出屏幕终端 RS232 上导致几个该错误我被建议更改 bfin 编译器版本并使用不同版本的 uclinux 重建 gdb 服务器,....没有一个工作,甚至用不同版本的 bfin-uclinux-gcc 编译我的代码都没有解决我的问题。
我决定重新编译 gdbserver.c 并消除产生错误的行,但实际上该行在任何用于编译的 gdbserver 相关文件中都不存在。
我决定通过运行 gdbserver :3298 process 1>/dev/null 2>/dev/null 来抑制 gdb 服务器的 stderr 输出,但这并没有解决它如何配置我的 gdb 客户端以请求特定的寄存器(bfin- uclinux-gdb) 与 bfin537-stamp 相关吗?
我认为这个错误起源于 uclinux 系统后台系统进程中的其他地方。我想找到哪个进程在 stderr,stdout 中写入我不知道它并且我想抑制它的输出?
我应该在busybox shell 或/bin/bash 中更改某些内容以消除所有stderr 输出,这意味着如果我将所有父shell 输出或stderr 发送到/dev/null 谢谢
linux - 在 gdb 中设置应用程序亲和性
有没有一种简单的方法来设置我正在调试的应用程序的亲和力而不将 gdb 锁定到同一个核心?我问的原因是应用程序以实时优先级运行,它需要在单核上运行。目前我使用这个命令行
但是应用程序停止响应并冻结 gdb 服务器,从而无法进行调试。我怀疑应用程序的实时优先级阻止 gdb 执行。如果我启动应用程序,然后在没有关联设置的情况下启动 gdb,那么我可以在不冻结 gdb 的情况下附加和调试应用程序。
有没有一种简单的方法来启动 gdb 和具有不同亲和力的应用程序?或者最好:是否有一个 gdb 命令来设置子进程的亲和力?
c++ - Eclipse 执行 MI 命令 -target-select remote 失败
尝试在 Eclipse 中设置远程 gdb 调试。当我尝试调试时,我得到:
我的 gdb 调试器设置正确
(执行此操作时,我可以获得 gdb shell)
知道我做错了什么吗?
gdb - 如何使用 gdb 处理远程信号?
我想远程调试程序。但问题是我的程序正在使用信号。在本地机器上,我使用以下命令处理信号:
handle SIG64 nostop noprint
但是对于使用 gdbserver 进行远程调试,我不知道如何处理信号。这是我正在做的事情:
任何帮助将不胜感激。
谢谢和BR,尤维
c - gdb 核心文件:交叉编译时查找共享库源路径
我在交叉编译环境中使用 gdb,在其中为目标架构构建了一个 linux 树,包括许多共享库。
问题:当我分析核心转储时,gdb 找到了我的 .so 文件及其符号的路径,但没有找到它们的源文件。
主机设置:
tree/
<-- 构建根目录
tree/apps/myapp/myapp
<--我的崩溃应用
tree/libs/mysharedlib/
<-- 共享库是从这样的路径构建的,并安装在 target/
tree/target/
<-- 目标构建根
tree/target/usr/bin/
<-- 我崩溃的二进制文件放在这里
tree/target/lib
<-- 一些 .so:s
tree/target/usr/lib
<-- 还有一些 .so:s
示例输出:
gdb 如何知道默认在哪里搜索源文件?
我知道可以在 gdb 中使用 'directory' 命令手动指定源目录,并且它可以工作,但我不想对每个共享库都这样做。我想设置构建我所有东西的根。当我使用 gdbserver 进行实时调试时,gdb 会自动查找所有共享库的源,因此我希望核心文件具有相同的行为。
是只有在二进制文件的调试信息中指定的 .c 文件名还是它们也有路径?相对还是绝对?