gdbserver 跟踪点臂支持

Posted

技术标签:

【中文标题】gdbserver 跟踪点臂支持【英文标题】:gdbserver tracepoint arm support 【发布时间】:2013-05-21 09:44:51 【问题描述】:

我为 arm 编译了 gdbserver 7.6:

cd /gdb-7.6-src/gdb/gdbserver
./configure --target=arm-linux --host=arm-linux
make CC=/path/to/cross-compiler-gcc

然后我为 arm 编译了 gdb 7.6:

cd /gdb-7.6-src/
./configure --target=arm-linux --prefix=/opt/gdb-arm/install/
make && make install

我用以下代码编译了我的简单应用程序:

/path/to/cross-compiler-gcc hello.c -g -o hello

我在板上复制了 gdbserver 和交叉编译的应用程序。 从我的电脑(x86-pc-linux)我运行:

gdb hello
(gdb) set target-async on
(gdb) tvariable $c
(gdb) actions
>teval $c=$c+1
>end
(gdb) break main
(gdb) target remote <ipaddr>:<port>
[Thread 1585] #1 stopped.
0x40000800 in ?? ()
Cannot access memory at address 0x0
(gdb) continue &
(gdb) tstart
Target does not support this command.
(gdb) tstatus
Target does not support this command.

tstart 命令之前,行为是“正常的”:我可以根据需要调试应用程序,但无法开始跟踪应用程序。

问题是:gdbserver 支持 arm 的跟踪点还是仅支持 x86/amd_64 的跟踪点?

【问题讨论】:

更新:gdb 邮件列表显示 gdbserver 中的跟踪点仅支持 x86/amd_64。 【参考方案1】:

我正在搜索相同的内容,我在 GDB 在线文档 webdocs 中找到了目前不支持任何 Archs 的内容。

查看更多信息: https://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html

引用:

此功能在远程存根中实现;但是,在撰写本文时,与 GDB 一起分发的存根均不支持跟踪点

【讨论】:

以上是关于gdbserver 跟踪点臂支持的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习: 使用gdb和gdbserver进行调试

gdbserver无法中断“SOME”进程,gdbserver调用kill(pid,2)没有发送SIGINT进程,发生了什么事?

Linux学习: 使用gdb和gdbserver进行远程调试

无法通过串口远程调试gdbserver

linux内核调试技术之GDB和GDBServer

Visual Studio 2017 Linux 远程调试(gdbserver)