问题标签 [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.
c - BusyBox 上没有调试符号交叉编译 ARM
我正在尝试调试在 ARM926EJ-S rev 5 (v5l) 上运行的 C 程序。该软件与标准交叉编译(并静态链接)。arm-linux-gnueabi 编译器(通过突触安装)。我运行Ubuntu 13.04 64bit。设备上有一个Busybox v1.18.2。我成功编译了gdbserver(使用host=arm-linux-gnueabi)和gdb(使用target=arm-linux-gnueabi),并且可以通过本地运行的gdb在嵌入式设备上启动我的程序......我现在的问题是,我没有正确的回溯输出。
gdb的消息:
我尝试使用-g、-g3 -gdwarf-2、-ggdb、-ggdb3编译软件,没有任何区别。
有人知道我在这里缺少什么吗?
这可能是 BusyBox 的问题,还是我的主机系统上需要额外的库?
我还尝试了execinfo.h中的函数backtrace_symbols,输出几乎相同......
提前感谢您的任何回复。
c++ - Remote debugging problems
I am trying to remote debug applications on a server in my local network.
Server:
Workstation:
I compiled a "Hello World" app on the workstation and it runs without errors on both workstation and server.
This works on both server and workstation
Shell 1:
Shell 2:
This does not work
Server:
Workstation:
GDB output
gdbserver tells me that there is an incomming connection, but it doesn't write my hello world message.
Any ideas?
P.S. I allready posted this question on linuxquestions.org a while ago. I don't think that was the right forum, so I am trying my luck here.
android - Android GDB 未加载 c++ 共享库
我一直在尝试调试我用 c/c++ 编写的共享库,但我无法使用 eclipse 对其进行调试。当我设置断点时从不命中并且info sharedlibrary
在 gdb 中执行后,我得到他的关注,确认该库不存在(称为 libtest-java.so)
有什么方法可以手动加载这个库吗?在 make 文件中,我使用以下内容:
包括 $(CLEAR_VARS)
非常感谢您的时间!
c - 如何使用 OpenOCD 在 GDB 中获取信息注册工作
我是 OpenOCD 和 GDB 的新手,请多多包涵。我在与系统对话的 Screen1 的服务器中运行我的 OpenOCD。在屏幕 1 中,我正在等待连接到来:
在 Screen2 中,我开始gdb
然后
我进入 Screen1(openocd):
这很好用,然后我收到一堆错误消息,例如:
我为什么要得到这个。我所做的只是连接。我要做的就是info reg
在 gdb 提示符下键入并获取寄存器值。
问题1:您如何可靠地停止系统?命令是什么。如果我继续做
大多数时候 info reg 都是零,但偶尔我会得到有效值。什么可以保证停止处理器并读取寄存器。
linux - 在用于 C/C++ 的 Eclipse IDE 中进行远程调试
我通过指定端口号和主机名,在Eclipse中使用远程调试应用程序模式在目标(嵌入式 pc)上运行我的代码。
我在目标上使用gdbserver,在客户端上使用手动远程调试应用程序。
当我在目标上调试我的代码时,它会进入调试模式。之后,调试模式下没有连接选项。只有启动、重新连接等。
为什么调试模式下没有连接选项?
assembly - 使用 gdb 在 qemu 中调试时错误的内存位置
我正在用汇编程序编写一个小内核。我在 QEMU 中运行它并且遇到了一些问题。现在我想用 dbg 调试内核。所以我像这样组装它:
然后我在 QEMU 中运行它:
然后我连接 gdb:
我的内核中有一个标签welcome
,它指向一个字符串。在测试时,我尝试查看该字符串,结果如下:
标签定义如下:
所以你可以看到,gdb 假装 Welcome 以空字节开头,但根据定义它不是。但是内核正确使用了标签,因此我的代码似乎没有问题。检查内存的其他部分与加载的内核完全不匹配。
有谁知道为什么虚拟机的内存与加载的内核不匹配,而机器仍然正常运行?
c - GDB 不从库中加载符号
我尝试使用 GBD 在 Android 上调试一些本机代码。该代码不是我创建的,也不在 Android 项目中,所以我不能使用 ndk-gdb 工具。我在 android 机器上使用 gdbserver,并使用普通的 GDB 程序从我的 mac 连接到它。我尝试加载所有库(根据 objdump 工具应该有符号),但 gdb 告诉我它不加载符号(根据 gdb 命令“info sharedLibrary”)。这些是我采取的步骤:
- 在 Android 机器上启动 gdbserver
使用二进制的调试版本启动 GDB
gdb symbols/system/bin/mediaserver
以下命令在 gdb 本身中执行
告诉 gdb 在哪里寻找带有符号的库
(gdb) set solib-search-path symbols/system/lib
告诉 gdb 在哪里可以找到源文件
(gdb) directory /sources
连接到远程目标(Android 机器)
(gdb) target remote 192.168.1.10:5039
GDB 成功连接到正在运行的二进制文件,我可以暂停并继续执行。但它没有显示任何调试信息,如函数名称或行号。它只显示地址。当我检查使用的库的状态时,我看到 gdb 认为,它们没有任何符号:
- gdb 中的命令:
(gdb) info sharedLibrary
From To Syms Read Shared Object Library
0x00003700 0x0000ff0c Yes /symbols/system/bin/linker
No libc.so
No libstdc++.so
No libm.so
No liblog.so
No libcutils.so
No libspeexresampler.so
No libaudioutils.so
No libgccdemangle.so
No libamplayer.so
现在以最后一个库为例。当我检查文件命令(不在 gdb 中)时,它告诉我它是一个未剥离的库(该库位于“symbols/system/lib”文件夹中)。
file libamplayer.so
输出:
libamplayer.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
objdump 命令在其中显示了很多符号(我没有显示输出,因为它很长)。那么为什么 gdb 不能识别这个库中的符号呢?我想,至少行号和函数名存在于未剥离版本的库中。还是我错了?如果有人能给我更多的见解,那就太好了。
谢谢!
系统信息:
GDB 版本:Mac OS X Mavericks 上的 7.3.1-gg2
gdb - 继续后如何返回gdb提示并且gdb没有命中断点
(gdb) 目标远程机器-XYZ:5001
(gdb) b some_function_name
(gdb) c
继续。
现在这里远程进程还没有命中函数,gdb 仍处于继续阶段。但是如果我必须添加更多断点或者我必须分离我该怎么做,如果不返回提示就无法完成。
c++ - 仅在遇到断点时如何与 gdbserver 连接?
使用 gdb,我将编写一个 .gdbinit 文件,其中包含以下内容:
这将使 gdb 运行程序并在这些断点处停止。
我怎样才能对 gdbserver 做同样的事情?例如:只有在断点被命中时才停止接受连接?