1. gdb 脚本的语法简介:

摘录博客:https://blog.csdn.net/hejinjing_tom_com/article/details/50350865

1]   # 为脚本注释命令

2]  赋值语句:set, 变量以$开始,以便区分是gdb还是调试程序变量。
     变量可为全局或局部,视声明位置。
    例如:
        set $x = 1;
3]  函数声明语句:define .. end 语句
     define func
     end
    无行参声明,但可以直接用$arg1,$arg2引用, $argc 为形参个数

函数语句开头不需要添加空格或tab键

4]  说明(帮助)语句: document.. end
    为函数书写帮助说明,格式如下。

define func

end

5] 显示语句: printf
    还可以用 echo

6]  条件语句: if..else..end
7]  循环语句: while .. end

8]  常规的gdb 调试命令语句。

9]  支持shell 命令, 可以实现dump, search 等复杂功能

注意:

gdb中使用的变量要加上'$'符号,否则会认为是被调试的程序中的变量

自定义的gdb命令脚本文件,可以用source 命令来导入。

上面是 几条简单语句,进一步学习 请参考:http://ifeve.com/gdb-script/

2. 写一个gdb脚本,可跟踪某个变量为某数值时,执行添加的断点

term.gdb 的内容如下:

#fileName : term.gdb
#define a function to set break_point define term if $argc != 2
help term
else set $lineNum = $arg0
set $val = $arg1 printf "set b in file.c:%d if ix==%d \n", $lineNum, $val
break file.c:$lineNum if ix == $val end end document term
usage: term lineNum val
end

test.c 文件内容如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> int main()
{
int ix = 0;
for(ix = 0; ix < 100; ix++)
{
printf("ix = %d\n", ix);
usleep(1000*1000);
} return 0;
}

gdb 脚本 简单理解的更多相关文章

  1. 简单理解php的socket连接

    socket建立套接的过程图: 首先了解socket 几个主要函数: socket的关键函数1: socket_create($net参数1,$stream参数2,$protocol参数3) 作用:创 ...

  2. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  3. input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has

    input屏蔽历史记录   设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处   ;(function($){$.ex ...

  4. Laravel集合的简单理解

    本篇文章给大家带来的内容是关于Laravel集合的简单理解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 集合通过 Illuminate\Database\Eloquent\C ...

  5. 关于 Promise 的一些简单理解

    一.ES6 中的 Promise 1.JS 如何解决 异步问题? (1)什么是 同步.异步? 同步指的是 需要等待 前一个处理 完成,才会进行 下一个处理. 异步指的是 不需要等待 前一个处理 完成, ...

  6. git的简单理解及基础操作命令

    前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...

  7. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  8. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  9. Js 职责链模式 简单理解

    js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...

  10. Deep learning:四十六(DropConnect简单理解)

    和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...

随机推荐

  1. Linux 第四节(shell脚本,IF,do,for)

    Shell脚本 1.批处理式: 2.交互式: 脚本声明   #!/bin/bash 脚本注释   #fakba;kb 脚本命令   ls pwd bash test.sh   //执行test.sh脚 ...

  2. flutter tabbar指示器indicator宽度高度自定义

    在tabbar中indicator宽度是无法修改的,所以需要咱们去自定义indicator. 下面是自定义的代码,直接拷贝使用,已做好修改. // Copyright 2018 The Chromiu ...

  3. 软件工程日报七——checkbox的使用

    今天学了checkbox的使用 activity_main.xml文件为 <?xml version="1.0" encoding="utf-8"?> ...

  4. 剑指 Offer II 回溯法

    086. 分割回文子字符串 用substr枚举 因为是连续的 不是放与不放的问题 class Solution { public: vector<vector<string>> ...

  5. GIS空间分析和建模复习重点1

    1.对空间分析的理解(对概念的理解) 空间分析是为了解答地理空间问题而进行的数据分析与挖掘,是GIS的核心.研究对象为空间目标(具有空间特性(位置,分布,形态,空间关系(距离,方位,拓扑)),属性特性 ...

  6. 树莓派,脚本遍历当前目录下视频文件,并用omxplayer播放

    事先准备好视频文件,文件名内包含视频尺寸信息,以方便构造 --win "x1 y1 x2 y2" 字符串. 通过 omxplayer  -i  filename   可查看视频尺寸 ...

  7. golang yaml配置

    Redis配置文件结构体 package config type Redis struct { Host string `yaml:"host"` Password string ...

  8. Windows系统的显示器校正

    莫名其妙的显示器显示的内容整体向上偏移,导致一些页面在最大化窗口时,看不见页面的标题,及操作按钮,如页面的关闭,缩小按钮. 解决方法:点击显示器下方的menu按钮,找到 设定 选项,再选择 复位 即可 ...

  9. sublime4 支持中文

    sublime_text_build_4143_x64_setup 安装完毕后,工具,命令面板,install package,ChineseLocalizations

  10. h5py学习(一)核心概念

    因pandas的to_hdf5函数有bug TypeError: object of type 'int' has no len(),写dataframe数据出现了报错,遂决定直接使用h5py来写数据 ...