gdb自动运行

Melis学习笔记(十):GDB调试程序应用 Melis调试方法:GDB基本用法 阅读详情

前阵子,有个机顶盒程序,升级后,起不来。根据打印分析的话,是出现了段错误。开机的时候段错误,且那么多盒子,就出现那么一两个,概率太小。要是人工去跑gdb,那太费时费力了。于是就希望能够在启动的时候,自动去跑gdb。

虽然在启动脚本里面,使用了./gdb demo,但是这样的话,每次起来,还是需要手动输入run命令去运行。这个就达不到自动运行的结果。因为如果开机正常启动的话,还得让盒子重启,再去跑./gdb demo,不可能人工等在那里输入run命令。于是就想能够一条命令,解决在执行./gdb demo后,能够自动输入run命令,而且在出现段错误的时候,能自动输入bt,获取堆栈,这样才能拷机获取有用的信息。

其实一开始的时候,是想用生产coredump的方式来获取堆栈的,但是这个方法试了,生成的coredump文件用不了,不知道是什么原因。编译链也是一样的,因此只有自动运行gdb的方法。

参考了gdb --help,似乎没看到有用的信息(有可能是英文确实不过关)。

最终的方法如下,使用:

./gdb demo 0<cmd.txt

其中,在linux,0表示标准输入,然后在cmd.txt中,放入文本:

run

bt

分行保存。这样在运行gdb的时候,会把cmd.txt的内容读取标准输入,就可以自动运行了。不过这样也有点不好,就是bt命令也很快就执行了。不过根据测试的结果,还是可以看到堆栈的

GDB 命令脚本的编写以及调试技巧汇总 在GDB调试程序的时候,如果程序带有很长的参数列表,或者调试命令本身很长,需要频繁启动调试会话时,频繁输入参数或者命令严重拖慢调试节奏,这里记录一个GDB非常有用的参数-x,可以将调试参数和调试命令以调试脚本的形式提供给GDB调试会话,这样就不用频繁输入调试命令和参数了。Linux上,万事不决问"男人","man"就是这个男人(还好是单数,如果是men就有点儿邪恶了), 我们先man一把gdb,看官方文档对 "-x"选项的解释。 阅读详情

相关推荐

【ARM Linux 系统稳定性分析入门及渐进10 -- GDB 初始化脚本介绍及使用】

这个功能特别有用,特别是当你有一组通常会执行的GDB命令时,你可以将这些命令保存在一个文件中,然后使用source命令来运行这些命令。参数用于指定一个包含GDB命令的文件,GDB会在启动时执行该文件中的命令。是一个GDB的初始化脚本文件,当你启动GDB时,GDB会自动从当前目录打开并读取。文件中的命令在每次GDB启动时都会被执行,这样你就无需每次都手动进行这些设置了。在这个例子中,GDB会在运行时自动在main函数处设置一个断点,并开始运行程序。命令时,你可以将这些命令保存在一个文件中,然后使用。

CodingCos的博客 1025

用gdb脚本进行自动化调试

本文首先介绍用于自动化调试的gdb脚本的基本语法和基本用法,然后给出程序实例和调试实例。 在使用gdb调试程序的时候,如果想让调试自动化,该怎么办呢? 比如,想关闭 confirm,关闭 pagination,打开 print pretty, 设置 system root 为当前目录,等等。 如果是每次运行gdb都希望自动实现这些简单的设置,那么可以写在 ~/.gdbinit 文件中。如下: #~...

FinixLei的专栏 (https://github.com/FinixLei) 1万+

周志华《机器学习》课程系列笔记——目录导航页

最近自学机器学习课程,注意到了南京大学周志华老师的课程。我是在学堂在线平台观看的,注意到b站上也有相应视频,但b站上并未获得授权,随时有消失的可能。周志华老师的网络教学视频中,与其西瓜书相比确实少了一些内容。但幸运的是,缺失的内容实际上对于初学者来说并不会产生太大影响。目前这一笔记也遵循视频内容,相比西瓜书中也会有一些缺失,敬请谅解。可能以后如果有机会和时间,我会再阅读周志华老师的书籍将缺失内容补全。一切内容敬请关注我的个人Page页面。

Sinocifengs的博客 1684

GDB 自动化操作的技术

程序员在调试时往往分成两派,一派用debugger另一派用print。至于本人嘛,是一个“机会主义者”,有时用print,有时却改投debugger阵营。 实话说,print要比用debugger设下断点更为简单粗暴,有时甚至会更有用。不过debugger对比于print有三个优点: 无需重新编译 可以在调试时改变变量 debugger...

weixin_34075551的博客 649

ANSYS APDL生死单元实战:焊接模拟从入门到精通(附完整命令流)

本文详细介绍了使用ANSYS APDL进行焊接模拟的核心技术——生死单元法。通过一个完整的平板对接焊案例,从原理剖析、模型搭建、命令流编写到移动热源施加和后处理,手把手指导工程师掌握这一动态仿真方法,有效预测焊接过程中的温度场、残余应力与变形。

k6l7m8n9的博客 150

IBM x3650M4服务器更换主板后,导入原有硬盘阵列信息

x3650m4服务器主板坏了,更换好的主板,需要导入原来硬盘的里面的阵列信息 1、开机有提示信息,按C导入配置 2、按Y继续 3、点击start进入阵列卡配置 4、选择configurations 1,点击preview 5、预览硬盘的阵列信息,点击import导入 6、导入成功,可以查看到阵列信息 7、重启服务器,进入操作系统 如果重启找不到操作系统,重启按f12,手动选择从onboard sas controller启动,进入系统一次后面重启就会自动找到并引导系统了。 8、有时候导入阵列

zds00virtue的博客 2万+

gdb自动运行测试程序及打印异常堆栈信息

gdb自动运行测试程序,自动打印异常信息

lslin405的专栏 996

Oracle 11g安装教程(保姆级超详细安装教程)

Oracle详细安装步骤,每一步都配有图例引导 ORACLE是数据库(Oracle服务端)。是连接数据库的客户端(Oracle客户端)。是连接oracle的可视化客户端软件。

2302_81846649的博客 1万+

自动启动本地gdb服务器,如何从Visual Studio Code运行OpenOCD GDB服务器

我正在开发Cortex-M3微控制器(STM32系列)上的应用程序.我正在尝试使用Visual Studio Code作为调试器接口,使用ST-Link v2 JTAG探针.我设法配置OpenOCD与我的设备通信,VSCode运行本地GDB并连接到OpenOCD.现在我想在开始调试时让VSCode与GDB同时启动OpenOCD.我有以下launch.json:{"version": "0.2.0"...

weixin_42347873的博客 1009

猫群优化算法(CSO)详解:从生物灵感到智能优化

猫群优化算法(CSO)是一种模拟猫科动物行为的群体智能优化算法。该算法基于猫的两种主要行为模式:搜寻状态(全局探索)和跟踪状态(局部开发)。CSO通过混合率(MR)动态调整两种模式的比例,实现探索与开发的平衡。算法核心包括搜寻模式的变异操作和跟踪模式的速度-位移模型,具有收敛性能好、全局搜索能力强等特点。相比传统优化算法,CSO在高维复杂问题中表现优异,已成功应用于函数优化、图像处理等多个领域。算法性能受混合率、变化域等参数影响,自适应参数策略可进一步提升优化效果。

qq_42212808的博客 617

python中使用squarify包可视化treemap图:为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小、添加数值数值标签、自定义设置边框的色彩

python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形自定义设置每一个数据格的颜色、添加数值数值标签、自定义设置边框的色彩、自定义设置边框线条的粗细、为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小

data+scenario+science+insight 1061

嵌入式系统中的gdb自动调试技巧

本文介绍了一种方法,让gdb随嵌入式设备开机自动运行。出问题后再连接上设备查看原因 在嵌入式系统中,有时会遇到较低概率的死机情况。 这时,因为不太容易复现,会导致调试中的一些麻烦。 在这种情况下,就可以将gdb做到嵌入式文件系统中,随系统的启动自动运行。 从而可以一次性升级多台机器(比如10台),同时测试。只要出问题时,利用gdb查看结果即可 下面介绍实施方案: 1,

翔子的世界 1362

九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)

目录 目录 摘要 1.kalman基础知识储备 摘要 本文主要记录自己学习ardupilot的ekf2代码的过程,相信很多人想移植或者学习ekf2,看到眼花缭乱的代码无从下手。九天揽月将带你玩转Ardupilot 的EKF2纸老虎 1.kalman基础知识储备 (1)先来看下最基础也是最重要的线性kalman 总结:不要害怕kalman,只要你可以懂得线性kal...

陌城烟雨 1万+

gdb和makefile的讲解

工程是需要被清理的,像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。那么make是如何工作的呢?

逃离枷锁,冲向天空! 1161

ADT MCP Server 把 ABAP 开发带进 Agent 模式

今天讨论 ADT MCP Server,不能只把它看成 Visual Studio Code 里多出来的一个开关。它真正有意思的地方,在于它把 ABAP 后端开发里那些原本需要手工点击、手工创建、手工激活、手工查服务元数据的动作,包装成一组可以被 GitHub Copilot 这类 coding agent 调用的工具。SAP 在 RAP130 练习里把它描述为运行在 ADT for Visual Studio Code 扩展内部的本地 HTTP Server,它实现的是 Model Context Pro

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 181

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

gdb自动化打印命令

gdb调试

qq_25677349的博客 1071

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

用GDB调试程序(一)

使用GDB 一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如: $gcc -g -Wall hello.c -o hello $g++ -g -Wall hello.cpp -o hello 如果没有-g,你将看不见程序的函数名、变量名,所代替...

勤学如春起之苗,不见其增,日有所长! 辍学如磨刀之石,不见其损,日有所亏! 353

VC中sqlite的使用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GDB中文手册

/****************************************************/ 用GDB调试程序 GDB概述 2 使用GDB 5 GDB中运行UNIX的shell程序 8 在GDB中运行程序 8 调试已运行的程序 两种方法: 9 暂停 / 恢复程序运行 9 一、设置断点(BreakPoint) 9 二、设置观察点(WatchPoint) 10 三、

yuliying的专栏 757

用GDB调试程序(三)

四、维护停止点上面说了如何设置程序的停止点,GDB中的停止点也就是上述的三类。在GDB中,如果你觉得已定义好的停止点没有用了,你可以使用delete、clear、disable、enable这几个命令来进行维护。    clear        清除所有的已定义的停止点。    clear     clear         清除所有设置在函数上的停止点。    clear    

陈皓专栏 【空谷幽兰,心如皓月】 4万+

用GDB调试程序---转贴,非常全面的调试技巧

用GDB调试程序  GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序 列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行 软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可 以做出一个非常强大的功能。  于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成 更

linuxblack125125的专栏 606

Linux C/C++编程之(十一)gdb调试

文章目录一、概述二、使用场景三、gdb调试四、gdb详解1. 简介2. 生成调试信息3. 启动GDB 的方法4. 程序运行上下文5. 调试代码6. 设置断点7. 查看运行时数据8. 自动显示五、GDB基本命令总结 一、概述 二、使用场景 使用场景el- 程序编译无误,但是有逻辑错误 使用文字终端(shell),实现一个单步调试的功能 生成可执行文件之前必须加参数-g gcc hello.c -o hello -g 三、gdb调试 gdb + 可执行文件(如:gdb hello)启动gb调试 I(l

种树最好的时间是10年前,其次是现在!!! 6461

GDB使用手册

简述 一 列文件清单 二:执行程序 三:显示数据 四:断点(breakpoint) 五.断点的管理 六.变量的检查和赋值 七. 单步执行 八.函数的调用 九.机器语言工具 十.信号 GDB的使用方法 简述一 列文件清单List (gdb) list line1,line2二:执行

星愿心愿的专栏 659

Linux程序运行时自动输入交互命令

在Linux系统里面,我们有时运行程序时,程序在运行过程中,需要我们输入一些信息,程序才能继续向下执行。比如gdb启动程序后,必须输入:run 命令,gdb才会继续运行。很多时候,我们已经知道交互的信息是什么了,想要程序自动输入,那么可以使用以下方法: gdb < test.txt test.txt里面有如下2行内容: set args -platform eglfs r 对test.txt里面的内容做解释: 第1行是程序运行的参数 第2行是运行 再举个例子: 我们写了一个hello程

a3121772305的博客 4316

用GDB调试程序

1.简介 GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:  GDB主要帮忙你完成下面四个方面的功能:  1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。  2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)  3.当程序被停住时,可以检查此时你的程序中所发生的事。  4.动态的改变你程序的执行环境。 2

hanxingwang0806的专栏 521

gdb高级调试方法

【原文:http://blog.youkuaiyun.com/wwwsq/article/details/7086151】 1,启动gdb的时候自动执行脚本 gdb -x your_script 注意:your_script里面只能有gdb命令。不过我们都知道gdb命令里面有个shell指令,所以实际上这里可以做任何事。 2,调试运行中的进程 在gdb里面有个

zhazhiqiang2010的专栏 946

用GDB调试程序(五)

查看运行时数据——————— 在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print <expr> print /<f> ...

chuifuhuo6864的博客 67
上一篇: OnClickListener启动对应按钮的Activity
下一篇: Linux目录、文件事件监控
rfasm
博客等级 码龄17年 2粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值