GDB远程调试设跟踪点后执行continue返回错误码'01'求助
问题描述
我尝试按照另一篇问题的描述获取GDB跟踪信息:
在一个终端运行:
$ gdbserver :1234 ./a.out Process ./a.out created; pid = 13610 Listening on port 1234
在另一个终端(客户端)执行:
$ gdb ./a.out ... GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 Reading symbols from ./a.out... (gdb) target remote :1234 Remote debugging using :1234 Reading /lib64/ld-linux-x86-64.so.2 from remote target... warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead. Reading /lib64/ld-linux-x86-64.so.2 from remote target... Reading symbols from target:/lib64/ld-linux-x86-64.so.2... Reading symbols from /usr/lib/debug/.build-id/45/87364908de169dec62ffa538170118c1c3a078.debug... 0x00007ffff7fd0100 in _start () from target:/lib64/ld-linux-x86-64.so.2 (gdb) trace 3 Tracepoint 1 at 0x555555555157: file ../test/main.cpp, line 3. (gdb) b 9 Breakpoint 2 at 0x55555555519a: file ../test/main.cpp, line 9. (gdb) actions 1 Enter actions for tracepoint 1, one per line. End with a line saying just "end". >collect $regs,$args >end (gdb) tstart (gdb) c
与该问题不同的是,当我想要继续执行到第9行的断点时,出现以下错误:
Continuing. Reading /lib/x86_64-linux-gnu/libc.so.6 from remote target... Target returns error code '01'.
我尝试在不设置跟踪点的情况下重复整个操作,continue命令可以正常工作。我曾搜索错误码'01',但它过于通用,无法得出有效结论。请问可能是什么原因导致的?
可能的原因及解决方法
1. sysroot配置不匹配
GDB远程调试时,若本地缺少与目标系统匹配的库文件,读取远程库(如libc.so.6)时容易出错,跟踪点功能对库文件和符号信息的依赖更强。
- 解决:执行
set sysroot /path/to/target/sysroot,将本地目标系统根目录配置给GDB,避免远程传输库文件;同时确保本地安装对应架构的调试包,比如Ubuntu下安装libc6-dbg。
2. GDB与GDBserver版本不兼容
不同版本的GDB和GDBserver之间可能存在协议差异,跟踪点这类复杂功能对版本一致性要求更高。
- 解决:在GDBserver终端执行
gdbserver --version查看版本,确保与客户端GDB版本一致或接近;版本差异过大时,升级或降级到匹配版本。
3. 跟踪点收集动作资源超限
collect $regs,$args会收集大量寄存器和参数信息,部分环境下可能因内存不足等资源限制导致GDBserver返回错误。
- 解决:先简化收集动作,比如仅
collect $pc,验证是否正常;若正常,再逐步增加收集内容,定位触发错误的具体项。
4. 程序编译选项问题
程序编译时未开启完整调试信息,或使用了高优化级别(如-O2及以上),会导致跟踪点无法正常工作。
- 解决:重新编译时添加
-g生成调试信息,同时关闭优化(移除-O相关参数);确保编译架构与目标系统一致,避免交叉编译不匹配。
5. 系统安全策略限制
SELinux、AppArmor等安全策略可能阻止GDBserver执行跟踪操作,返回错误码。
- 解决:执行
getenforce检查SELinux状态,若为Enforcing模式,可临时执行setenforce 0重试;检查AppArmor的GDBserver相关配置,必要时调整规则。
内容的提问来源于stack exchange,提问作者Juan Gonzalez Burgos
相关产品推荐
相关产品推荐

