gdb 脚本 简单理解
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 脚本 简单理解的更多相关文章
- 简单理解php的socket连接
socket建立套接的过程图: 首先了解socket 几个主要函数: socket的关键函数1: socket_create($net参数1,$stream参数2,$protocol参数3) 作用:创 ...
- 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制
[原创]分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...
- input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has
input屏蔽历史记录 设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处 ;(function($){$.ex ...
- Laravel集合的简单理解
本篇文章给大家带来的内容是关于Laravel集合的简单理解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 集合通过 Illuminate\Database\Eloquent\C ...
- 关于 Promise 的一些简单理解
一.ES6 中的 Promise 1.JS 如何解决 异步问题? (1)什么是 同步.异步? 同步指的是 需要等待 前一个处理 完成,才会进行 下一个处理. 异步指的是 不需要等待 前一个处理 完成, ...
- git的简单理解及基础操作命令
前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- [转]简单理解Socket
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
- Js 职责链模式 简单理解
js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...
- Deep learning:四十六(DropConnect简单理解)
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...
随机推荐
- es实现规格分组分析
es里面的规格是重复的,页面显示则是不重复
- Mac连接交换机
接上免驱动的绿联,可以看到有一个usb串口设备: ls /dev/tty.* /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial-AB0LU5PY ...
- ChainofResponsibility Pattern
责任链模式: 参考:https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html 避免请求发送者与接收者耦合在一 ...
- python_lib_x_1000_file_csv.py
#!/usr/bin/python # -*- coding: UTF-8 -*- from lib_config import * from lib.lib_x_0002_decorator_log ...
- 关于webpack 开启代理proxy后,接口看不到代理地址的问题。
今天在项目中发现, 明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx.这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改.这 ...
- 2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比
超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1Si24R1 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片.工作频 ...
- SpringBoot启动流程与自动装配
是什么 Spring Boot基于Spring框架之上的一个微服务架构开发框架大大简化了Spring的开发.因为Spring Boot提供了大量的自动配置.而且它是基于Java配置方式的开发(全注解) ...
- print语法
循环体 是 缩进的 :缩进是 Python 组织语句的方式.在交互式命令行里,得为每个缩输入制表符或空格.使用文本编辑器可以实现更复杂的输入方式:所有像样的文本编辑器都支持自动缩进.交互式输入复合语句 ...
- 使用shell定时执行脚本
yum install crontabs //安装 #检查安装crontab -V #服务操作service crond start //启动服务service crond stop //关闭服务se ...
- jquery链式调用原理
jquery选择器$('selector')返回的不是数组,而是一个被封装好的jQuery对象,查询到的每一个节点,都被以下标为属性的方式添加到jQuery对象,jQuery对象上的方法包含对象本身的 ...