GDB与shell 调试

Zephyr 调试实用指南:日志系统、Shell CLI 与 GDB 全面解析 本文介绍了Zephyr RTOS的三大调试工具:1. 统一日志系统支持多模块分级日志输出,可配置串口/RTT/网络等不同后端;2. 内置Shell CLI提供线程查看、设备管理等命令式交互功能;3. GDB集成实现断点调试和变量查看。并给出了配置方法、使用示例和性能优化建议,帮助开发者快速定位系统问题。三种工具各具优势,配合使用可显著提升Zephyr应用的调试效率。 阅读详情

GDB

gcc  -g  -o hello hello.c

gdb hello

带参数

(gdb) set args a b c

gdb调试命令(最常用的)
       
       run : 程序第一次执行,到第一个断点位置暂停。如果没有断点,则一直执行程序直至完成
                 run 后面可以加上参数,作为主函数main的参数
                 run 可简写为 r

       start : 进入逐行调试模式, 不会一次性执行完整个程序

       step : 一次执行一行语句, 遇到函数调用将进入函数
                    step 可简写为 s

       next : 一次执行一行语句,但遇到函数调用不进入
                    next 可简写为 n

       return 或 finish : 单步进入函数后,直接跳出函数

       bt : 查看堆栈信息, 可以查看到段错误发生的行号

       list : 查看当前行附近的所有代码(默认显示10行)
                 list 5, 10 : 显示当前文件 5 到 10 行的内容
                 list test.c : 5, 10   : 显示test.c文件的 5 到 10 行的内容
                 list main  : 显示main函数周围的代码
                 list test.c function : 显示test.c文件中函数function周围代码
                 list 可简写为 l

       break : 设置断点
                       break main : 可以给一个函数设置断点
                       break 12   : 可以为当前文件的某一行设置断点
                       break test.c 12 : 给源文件test.c 的第12行设置断点
                       break 可简写为 b

       info breakPoint : 查看所有断点信息(断点位置,断点编号...)
                                             可简写为 i b

       delete : 删除断点
                       delete 4 : 删除断点号为4的断点
                       delete :  即不指定断点编号,则删除所有断点
                       delete 可简写为 d

       continue : 继续执行运行程序,到下一个断点暂停 或 watch 变量对象变量改变时暂停
                              continue 可简写为 c

       print : 查看某个变量的内容
                     print a : 输出变量a的值
                     print 可简写为 p

       watch : 监控一个变量,当变量发生改变时,程序会停止
                        watch a : 监控变量a,如果a的值发生了改变,则程序暂停


后台进程调试:

       将指定进程链接进入gdb调试:
              gdb -p + PID : 可以进入正在运行的后台程序的调试模式
                                      pID 指的是进程的ID

              attach + PID : 在gdb内部命令环境进入一个后台进程的调试模式
                                      解除当前链接进gdb的进程:
                                      detach
多线程调试: 

       info thread : 查看所有线程信息(线程编号... 其中标识*指的是当前调试的线程)
       thread + 线程编号 : 可以切换调试线程

shell

Shell本身提供一些调试方法选项:

基本写法: sh [-nxv] 脚本名字
参数:

  • -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
  • -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。
  • -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。


Zephyr 调试进阶手册:日志系统优化、Shell CLI 实战与 GDB 高级技巧 本文深入探讨了Zephyr RTOS的高级调试技术,重点介绍了日志系统的性能调优与多后端配置、Shell CLI的实战应用与自定义命令开发,以及GDB调试器的高级技巧与自动化脚本。通过综合运用这些工具,开发者可以构建高效的立体化调试工作流,快速定位并解决嵌入式系统中的复杂问题。 阅读详情

相关推荐

Graybox Overview

Graybox功能使能够在sub_module上执行扫描和ATPG操作,然后能够在更高层次的层次上执行扫描和ATPG操作时使用该子模块的简化的Graybox表示,从而简化了分层设计中的扫描插入和ATPG操作过程。由于子模块的graybox表示只包含极少量的互连电路(子模块与top的互连),在大型分层设计中使用graybox可以极大地减少执行扫描插入,优化计时,分析故障和创建测试pattern所需的memory和工具runtime。

weixin_44954910的博客 1084

GDB怎么调试使用.sh(shell脚本)启动的程序?(未完成,待测试)

1 )直接在shell脚本中调用GDB。这意味着你没有标准的和标准的重定向。(不知道怎么操作。。反正没成功) 2)运行shell脚本,然后将调试器附加到已经运行的c ++进程,像这样:gdb progname 1234其中1234是正在运行的c ++进程的进程ID。(没有尝试成功) 如果您需要在程序开始运行之前执行操作,则选项1将是更好的选择,否则选项2是更清洁的方式。 参考文章:使用GDB调试从shell脚本调用的C ++程序(Use GDB to debug a C++ program called f

Dontla的博客 3950

前端宝典之七:React性能优化实战精华篇

本文主要讲解实战项目中React性能优化的方法,主要分为三个大的方面:减少不必要的组件更新、组件优化以及tree-shaking,共11个方法

franktaoge的博客 1902

Linux GCC,GDB,Shell脚本,Vim的简单使用

然而,如果你在多次编译中需要重复使用预处理文件、汇编文件或目标文件,或者需要手动进行编译的不同阶段的调试或优化,那么将源代码分别经过预处理、编译、汇编和链接四个步骤可能会更加灵活和方便。gcc -o hello hello.c这种一步到位的方法会将文本文件直接转化成可执行文件,这样的做法会比将源代码分别经过预处理,编译,汇编,链接这四个过程的效率要更高,会发现x和y的值是正常的,但是因为sum=x+y这条命令没执行,所以sum的值是没初始化的。监视变量的值,当该变量的值发生变化时,GDB会中断程序的执行。

qq_52508038的博客 1874

【项目立项管理、项目整合管理】30天通过软考高项-第二天

①项目或阶段的概述;②范围目标、范围的评估标准,证明达到完⼯标准的证据;③质量目标、项目和产品质量的评估标准、相关核实信息和实际里程碑交付日期以及偏差原因;④成本目标,包括可接受的成本区间、实际成本,产⽣任何偏差的原因等;⑤最终产品、服务或成果的确认信息的总结;⑥进度计划目标,包括成果是否实现项目预期效益:如果在项目结束时未能实现效益,则指出效益实现程度并预计未来实现情况;

weixin_42520723的博客 1000

【自动驾驶】控制算法(十)深度解析车辆纵向控制 | Carsim 油门刹车标定表的制作...

写在前面: ???? 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。???? ???? 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 ????感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~文章目录引言一、油门标定原理1.1 油门与速度、加速度的关系1.2 油门控制曲面模型的构建二、油门标定表的制作流程...

qq_35485206的博客 2139

如何在 shell 脚本中使用 GDB 调试

本文的背景是当前一些程序在平台运行的时候,无法在终端进行gdb调试,因此在shell脚本中,进行gdb调试是一种不错的选择。 本文针对的调试命令主要为 bt(backtrace) 【调用堆栈】, 当然其他命令也是可以的。 gdb 利用产生的core文件在terminal进行调试的命令为: core文件名字为: core.64 可执行文件: ./workspace/pro gdb -c core.64 ./workspace/pro 1. 创建一个文件,名字任意,这里暂定名字为 gdb_script.

weixin_45137428的博客 3507

PCIe设备内存访问实战:从ioremap到DMA映射的完整流程解析

本文深入解析了PCIe设备内存访问的完整流程,涵盖从CPU通过ioremap访问设备寄存器,到设备通过DMA映射高效读写主机内存的核心机制。详细探讨了虚拟地址、物理地址与总线地址的转换关系,对比了一致性与流式DMA映射的适用场景及同步要点,并阐述了IOMMU在安全与效率中的作用,为驱动开发者提供了实战代码与关键陷阱分析。

weixin_29201933的博客 506

【1000个GDB技巧-009】-GDB如何调用shell命令?shell echo 1 > my.gdb

gdb中使用shell命令可以快速执行一些变量获取,处理文件,读取文件,读取配置等。

技术札记 584

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4972

LeRobot X-VLA:首个适用于任意机器人、任意任务的软提示机器人基础模型

X-VLA是一种基于软提示的视觉-语言-动作模型,通过可学习嵌入向量编码不同机器人配置,实现跨平台统一控制。该框架采用两阶段训练:先在29万次多平台任务中学习通用策略,再通过微调少量参数(仅1%)适配新机器人。实验表明,0.9B参数的X-VLA在6个仿真和3个真实平台上表现优异,如LIBERO任务达93%成功率,布料折叠任务100%完成。其核心创新是将硬件差异视为"任务",用软提示引导Transformer处理异构数据,为机器人基础模型提供可扩展方案。

2506_90492529的博客 1241

shell命令:gdb调试

题目描述 写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行 示例: 假设 nowcoder.txt 内容如下: abc 567 aaa bbb ccc 你的脚本应当输出: abc 567 aaa bbb ccc

猴子居士的博客 525

DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

【代码】DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

baidu_34971492的博客 970

Linux下的gdb调试工具和shell脚本的接触

内容:1、gdb调试工具的学习。 gdb是gun的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。当程序暂停执行时,可以使用命令查看程序中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。 调试步骤:用-g参数将调试信息编入目标文件xx中     gcc -g xx.c -o xx 用命令启动对程序app的调试:  gdb xx 若程序xx运行时需要参数,则用以下...

wow66lfy的博客 1663

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Linux之shell编程和gdb调试

1 间隔符 在shell下的for循环语句中,容器中,各个元素之间 是通过 间隔符 来分开的 默认情况下:读取 列表中的值----以 空格、TAB、换行  为间隔符 列表可以为: 常量 变量 某个命令的输出结果 某个目录下的所有文件 临时更改 间隔符: IFS.OLD=$IFS IFS=$'\n' IFS=$IFS.OLD //换回 默认值了

走向CTO的路上... 1430

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

嵌入式shell命令及软件包,gdb调试

嵌入式自学

afddasfa的博客 419

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux下gdb调试工具及shell脚本的几种语句结构

上午在找些c语言的题目做,水平不够浪费了许多时间。 下午上学习了,gdb调试工具和shell使用基础。 使用gdb前必须在编译是加入-g选项,例:gcc hello.c -o hello -g 然后输入指令  gdb hello [命令行参数1] ... [命令行参数n] 一些gdb的常用指令如下: (gdb)list             l    列出源码(只显示10行)    ...

乞木的博客 935

程序调试手段之gdb, vxworks shell

调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足上述程序调试的基本功能。为了更好的理解和记忆,下面给出两者的差异点。 表1 功能 vxworks shell linux gdb 说明 启动程序 ...

weixin_30352645的博客 415

C语言之linux、shell、vim、gcc、makefile、gdb调试

教程http://www.runoob.com/linux/linux-tutorial.html PHP之linux使用:https://blog.youkuaiyun.com/u011146511/article/details/78408477 在Windows上安装linux;首先安装virtualbox创建虚拟机(新建---下一步-----给虚拟机分配内寸-----分配硬盘大小---),然后在v...

代码解释生活 753

Zephyr 调试进阶手册:日志系统优化、Shell CLI 实战与 GDB 深度调试

本文深入探讨了Zephyr RTOS的高级调试技巧,重点介绍了日志系统的性能优化策略,包括立即模式与延迟模式的适用场景及后端选择。详细讲解了Shell CLI作为交互式诊断控制台的实战应用,如自定义命令开发与系统状态查询。最后,结合GDB深度调试,阐述了如何定位复杂问题(如死锁、内存错误)并进行图形化调试,全面提升嵌入式开发的问题排查效率。

earth的博客 224

GDB调试完别急着关!优雅退出与Shell命令集成的3个高效工作流

本文深入探讨GDB调试的优雅退出方式与Shell命令集成,提供3种高效工作流提升开发效率。涵盖基础退出命令、状态码返回、生产环境detach技巧,以及不中断调试执行Shell命令的实用方法,帮助开发者构建自动化调试流程。

weixin_33701251的博客 266

python命令行调用gdb_GDB使用shell命令和make命令

GDB 中可以使用 shell 命令,也就是说可以实现 shell 中的功能,这样可以极大的提高我们调试程序的效率。GDB 中还可以使用 make 命令,这样就可以不退出 gdb 调试界也可以重新编译程序。使用shell命令gdb 中可以使用 Linux 中的 shell 命令,需要使用 gdb 中的 shell 命令实现 ,使用方法如下:shell 表示的是 shell 中的命令,例如:(gdb...

weixin_39524574的博客 347

linux下shell编程调试方法,gdb工具的使用

原帖:向日葵智能前言windows 的界面操作非常丰富,对程序开发也是如此,各种强大的 IDE 真是非常方便。转入 linux 编程后,没有界面,用 vim gcc 搞程序开发,一开始还真是不适应。现在用的多了,反而习惯用 linux 开发了。但是,没法调试程序真是太痛苦了,只能逐行加 printf。。。其实早就听说 linux 程序开发有 gdb 工具可以用于调试,一直没有去了解。今天加 pri...

Ryuchong的博客 3071

Shell自动化循环实战 × Makefile工程管理 × GDB调试:Linux高手进阶指南

【代码】Shell自动化循环实战 × Makefile工程管理 × GDB调试:Linux高手进阶指南。

2403_90017956的博客 823

手把手调试CSAPP Shell Lab:用GDB分析eval函数与进程组控制

本文详细解析了CSAPP Shell Lab中eval函数与进程组控制的调试方法,通过GDB工具逐步分析信号处理、进程组设置等核心机制。文章提供了完整的代码调试技巧和实战案例,帮助开发者深入理解Unix shell的作业控制原理,特别适合计算机系统课程学习者参考。

weixin_28049429的博客 228

非常方便的shell脚本opencv编译以及gdb调试

非常方便的shell脚本编译opencv,以及gdb调试命令

Pierre_Hao的专栏 1581
上一篇: TeamTalk消息协议
下一篇: GDB调试 TeamTalk server src
江太翁
博客等级 码龄15年 271粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值