GDB 与 GDBServer 远程调试基础命令详解

news/2025/10/15 10:45:24/文章来源:https://www.cnblogs.com/eesky/p/19142779

GDB 与 GDBServer 远程调试基础命令详解

 


一、环境准备

  1. 目标机(嵌入式设备)​

    • 安装 gdbserver(如 arm-linux-gnueabihf-gdbserver

    • 启动 gdbserver并监听端口:

      bash
      复制
       
       
      gdbserver :2345 /path/to/program [args]  # 监听本地2345端口,运行程序
    • 若调试已运行进程:

      bash
      复制
       
       
      gdbserver :2345 --attach <PID>  # 附加到进程ID
  2. 主机(开发机)​

    • 安装交叉编译工具链的 GDB(如 arm-linux-gnueabihf-gdb

    • 启动 GDB 并加载程序:

      bash
      复制
       
       
      arm-linux-gnueabihf-gdb ./program

二、连接与调试基础命令

命令

作用

示例

target remote <IP>:<PORT>

连接到目标机的 GDBServer

(gdb) target remote 192.168.1.100:2345

file <program>

加载可执行文件(需与目标机程序一致)

(gdb) file ./program

list/ l

显示源码(默认显示当前位置前后10行)

(gdb) list main

break <location>

设置断点(函数名、行号、内存地址)

(gdb) break main

run/ r

启动程序执行(带参数可用 set args设置)

(gdb) run arg1 arg2

continue/ c

从断点继续执行至下一个断点或程序结束

(gdb) continue

step/ s

单步执行(进入函数内部)

(gdb) step

next/ n

单步执行(不进入函数)

(gdb) next

print <var>/ p

打印变量值(支持格式控制,如 x十六进制、d十进制)

(gdb) p/x 0x1234

backtrace/ bt

查看调用栈(显示函数调用链)

(gdb) bt

info breakpoints

列出所有断点信息

(gdb) info breakpoints

delete <BP_NUM>

删除指定断点

(gdb) delete 1

finish

继续执行至当前函数返回

(gdb) finish


三、调试场景示例

  1. 设置断点并单步调试

    bash
    复制
     
     
    (gdb) break main.c:10    # 在 main.c 第10行设置断点
    (gdb) run                # 启动程序
    (gdb) step               # 进入函数内部
    (gdb) next               # 跳过函数调用
    (gdb) p count            # 打印变量 count 的值
  2. 查看内存与寄存器

    • 查看内存内容:

      bash
      复制
       
       
      (gdb) x/4xw 0x20001000  # 从地址0x20001000读取4个32位字(十六进制)
    • 查看寄存器:

      bash
      复制
       
       
      (gdb) info registers    # 显示所有寄存器值
  3. 条件断点与观察点

    • 条件断点(当变量 i == 5时触发):

      bash
      复制
       
       
      (gdb) break 20 if i == 5
    • 监控变量变化:

      bash
      复制
       
       
      (gdb) watch my_var      # 当 my_var 值变化时暂停

四、高级调试技巧

  1. 远程调试附加进程

    bash
    复制
     
     
    (gdb) target remote :2345  # 连接到本地2345端口(默认)
  2. 加载核心转储文件

    bash
    复制
     
     
    (gdb) core-file core.dump  # 加载崩溃时的核心转储文件
  3. 多线程调试

    • 查看线程列表:

      bash
      复制
       
       
      (gdb) info threads
    • 切换线程:

      bash
      复制
       
       
      (gdb) thread 2           # 切换到线程2

五、常见问题解决

  1. 无法加载符号

    • 确保编译时添加 -g选项(保留调试信息)。

    • 使用 file命令重新加载程序。

  2. 连接失败

    • 检查防火墙是否放行端口(如 2345)。

    • 确认目标机和主机的 IP 地址正确。

  3. 段错误定位

    • 使用 catch signal SIGSEGV捕获信号:

      bash
      复制
       
       
      (gdb) catch signal SIGSEGV
      (gdb) run

六、总结

  • 核心流程​:

    gdbserver启动监听 → 主机 gdb连接 → 加载程序 → 设置断点 → 运行调试。

  • 关键命令​:break, step, next, print, backtrace是调试的核心工具。

  • 调试原则​:

    • 始终使用 -g编译程序。

    • 优先通过日志和断点缩小问题范围。

通过上述命令,可高效完成嵌入式 Linux 程序的远程调试。如需更复杂场景(如多进程、信号处理),可结合 GDB 脚本或 Python 扩展

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zedboard + AD-FMCOMMS3-EBZ AD9361 (三) matlab demo 测试

zedboard + AD-FMCOMMS3-EBZ AD9361 (三) matlab demo 测试 AMD FPGA and SoC Devices — Examples

内网穿透的原理和安装

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

.NET 构架下remoting和webservice

“WebService 走 HTTP+SOAP,跨平台却低效;Remoting 走 TCP/二进制,高效但仅限 .NET。二者都已被 WCF → gRPC/WebAPI 取代,如今只出现在遗产系统。

SIMATIC WinCC V8.1 安装教程与功能介绍(附详细图文步骤)超详细

SIMATIC WinCC V8.1是西门子公司推出的先进的过程监视和控制系统软件。它基于Windows操作系统,继承了前几代产品的优良特性。该软件提供更好的兼容性,能支持更多硬件设备和控制系统。拥有现代化的Web UI,用户可通过…

Zerotier,内网穿透神器 - IT苦行僧

zerotier是基于点对点的网络链接速度只取决于自己的网络带宽,可以让你轻松自如地实现远程办公。下面就跟着我的图文教程一步步搭建你的zerotier网络吧。首先登录zerotier官网,注册账号,建立网络,下载客户端软件官网…

311、出塞

311、出塞311、出塞 唐●王之涣 黄河远上白云间,一片孤城万仞山。 羌笛何须怨杨柳,春风不度玉门关。【现代诗意译】 远远望云 黄河与天上的白云连在一起 下面是一片孤零零的戍城 坐落在万仞高山下吹笛的将士们啊 你们…

接触过的芯片型号之间区别

接触过的芯片型号之间区别1.RK3568,RK3506,ESP8266,ESP32,MCS-51之间有什么不同?特性 MCS-51 ESP8266/ESP32 RK3568 / RK3506核心类别 微控制器 微控制器 应用处理器核心架构 8位/16位 单核 32位 单核/双核 (Xtens…

PCL2 下载安装全攻略:整合包导入 + Mod安装 + 常见问题汇总(2025最新版)

想快速玩上 Minecraft?本教程为你详细讲解 PCL2 下载安装、整合包导入与 Mod 安装方法,并附带常见问题解决方案。PCL2 启动器拥有国内高速下载源、一键整合包导入、拖拽式 Mod 安装等功能,是目前最稳定高效的 Minec…

旧电脑无法升级Win11

还在为电脑不支持Windows 11而烦恼吗?微软的TPM 2.0、安全启动等硬件要求让许多性能完好的电脑被挡在Win11门外....旧电脑无法升级Win11?这款神器让你轻松绕过限制!官方淘汰的电脑,靠它重获新生还在为电脑不支持Wi…

关于并发和并行的理解

并发和并行都是描述多线程工作状态的一种描述。并发Concurrency并发是指某个时间段内,有多个任务在轮流执行。表现的效果就是就是在这个时间段内多任务(多线程)在同时执行。它对执行单位(如cpu)并没有要求,因此极…

2025年自润滑轴承厂家最新推荐排行榜,石墨自润滑轴承,复合自润滑轴承,无油自润滑轴承,高强度自润滑轴承公司精选

2025年自润滑轴承厂家最新推荐排行榜:石墨、复合、无油、高强度自润滑轴承公司精选随着工业4.0时代的深入发展,自润滑轴承作为机械设备中的关键零部件,正迎来技术革新与市场需求的双重驱动。根据行业数据显示,全球…

oracle多租户环境CDB与PDB执行

oracle多租户环境CDB与PDB执行2025-10-15 10:23 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

Morlet小波分析详解

1. Morlet小波的理论基础 Morlet小波是一种复值小波,由高斯包络与复指数函数结合而成,其数学表达式为:其中,\(ω_0\)为中心频率(通常取 \(ω_0≥5\)以保证零均值性),高斯包络提供时域局部化,复指数实现频域选择…

P66作业

点击查看代码 import torch from torch import optim, nn from torchvision import datasets, transforms from torch.utils.data import DataLoader import torch.nn.functional as Fdevice = torch.device(cuda if t…

ECT-OS-JiuHuaShan元推理 的意义、价值、作用、应用场景及哲学理念

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891基于 ECT-OS-JiuHuaShan 框架,启动推理过程。本框架作为自然辩证法数学形式化张量逻辑系统,以宇宙规律为公理、因果律为算符,确保所有输出结论具有绝对确定…

Gitee vs. GitHub 2025:中国开发者为何更青睐本土代码托管平台?

Gitee vs. GitHub 2025:中国开发者为何更青睐本土代码托管平台? 在数字化转型加速的2025年,代码托管平台的选择成为开发者社区热议的话题。作为国内领先的技术媒体,我们深入调研了Gitee与GitHub两大平台的最新发展…

2025 年自润滑轴承厂商最新推荐排行榜:聚焦高承载技术与全球客户口碑,助力企业精准选择优质供应商无油/复合/耐磨/无油向心关节轴承厂家推荐

当前工业领域对自润滑轴承的需求日益多元化,从工程机械的高承载场景到医疗机械的精密运行需求,对轴承性能、品质的要求不断提升。然而,市场上自润滑轴承制造商数量众多,产品质量参差不齐,部分厂商缺乏核心技术,产…

几个好看的PS1配色

# 自用的 export PS1=$\[\e[48;5;142;38;5;16m\]\u\[\e[48;5;36;38;5;16m\]@\[\e[48;5;114;38;5;16m\]\h\[\e[48;5;36;38;5;16m\]:\[\e[48;5;109;38;5;16m\]\w\[\e[48;5;81;38;5;16m\]$( git rev-parse --git-dir >…

实用指南:【Linux系统】—— 环境变量

实用指南:【Linux系统】—— 环境变量pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

2025 年 MBR 膜厂家最新推荐排行榜:权威评选优选品牌,污水处理设备选型指南全解析污水处理设备MBR膜厂家推荐

当前我国水污染治理进入攻坚阶段,市政污水、工业废水与农村污水排放量持续攀升,MBR 膜作为污水处理核心设备,其性能直接决定处理效率与水质达标率。但市场中品牌超 50 家,产品质量、抗污染能力与服务水平差异显著,…