GDB 内写脚本调试程序
很多纯 C 语言的项目都会自己开发一套基础数据结构,比如最常见的就是造一个 C++ Vector 或者 String 的轮子,有了 Vector 以后就可以往里面自由 add() 任意类型的数据,在具体实现中用 Void* 做强制类型转换,这样带来的问题是无论 gdb 还是 printf 调试程序,都必须手动转换指针指向的那一块内存区域:强制转换类型、明确数据占据的内存大小。例如 gdb 中打印 vector[0] 或者 vector[i] 的命令就必须写成这样:
print *((unsigned long*)(vec->data + 8*i))
当无法修改程序源码只能用 gdb 时,打印一个 vector 数组是相当蛋疼的事情,好在 gdb 提供了一个自定义命令的功能,或者说可以先把自定义的命令写成一串指定保存到文本中,然后在 gdb 中加载这个文件就可以使用这个命令了:
define printvec set $total = $arg0->n_element // arg0 表示输入的第一个参数,arg1 类推 set $i = 0 print $total while ($i < $total) print *((unsigned long*)($arg0->data + 8*$i)) set $i = $i+1 end end(gdb) source cmd.txt (gdb) printvec vec
原创文章,转载请注明出处。本文链接地址: GDB 内写脚本调试程序
GDB 内写脚本调试程序相关推荐
- url获取网站信息不包含网页源文件内的标签_前嗅ForeSpider链接抽取应用场景及链接在源码的html标签里写脚本...
今天,小编给大家带来的教程为:前嗅ForeSpider脚本教程中,链接抽取的应用场景,以及链接在源码的html标签里写脚本的实战教程.具体内容如下: 一.应用场景 当需要手动添加链接时,可添加链接脚本 ...
- 怎么写脚本_直播脚本怎么写|请收下这份攻略
"口红一哥"李佳琦为何那么牛,有人说是因为站在了风口上,有人说是因为他标志性的吆喝声.事实上,更大的因素在于他对每场直播的精心准备.比如,李佳琦推荐每款产品时,往往都会提炼出一个. ...
- python怎么换行继续写脚本_python怎么换行继续写脚本
推荐手册:Python 基础入门教程 在python中,Python用反斜线 ("") 作为续行符(换行符),这里以python3.5为例.首先运行终端或者cmd命令行(windo ...
- python编写怎么换行_python怎么换行继续写脚本
在python中,Python用反斜线 ("\") 作为续行符(换行符),这里以python3.5为例.首先运行终端或者cmd命令行(windows下).执行python3.5的命 ...
- python写的脚本怎么用,如何用python写脚本
如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...
- 无师自通-自己学写脚本,小明外挂脚本代码教程 转载
无师自通-自己学写脚本,小明外挂脚本代码教程 转载 2011-02-03 19:47:20| 分类: 石器脚本 assa | 标签:walkpos 指令 对话框 跳转 道具 |字号 订阅 下载LOFT ...
- python写地下城脚本下载_在python下写脚本的方法
在python下写脚本的方法 发布时间:2020-07-18 11:43:36 来源:亿速云 阅读:68 作者:清晨 这篇文章主要介绍在python下写脚本的方法,文中介绍的非常详细,具有一定的参考价 ...
- AC68U梅林固件,从ipv6设置到写脚本手动绑定ddns,通过单ipv6实现公网访问
目录 折腾起源 设置ipv6 DDNS设置部分 打开ssh端口及服务 进入ssh界面 方法一:套用jffs下自带的启动脚本 方法二:在梅林固件默认启动脚本目录下自建脚本 脚本实现部分 DDNS实现 l ...
- loadrunner写脚本常用C函数
loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...
最新文章
- HJ75 公共字符串计算
- 互补输出级采用共集形式是为了使_互补输出级采用共集形式是为了使
- 设置textview背景色为透明
- android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...
- 安卓入门系列-08四大组件之Activity
- 将信号量代码生成静态库以及动态库
- getBoundingClientRect()来获取页面元素的位置”
- 2022计算机毕业设计如何选题?
- 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
- WannaCry笔记
- 皇后游戏c语言,C语言中关于4皇后或8皇后问题!
- hdu5755 Gambler Bo(高斯消元)
- Python解释大数定律
- 第1.3章:StarRocks部署--单机部署
- UNetbootin使用
- Oracle ltrim() 函数详细用法
- 基于微信预约挂号小程序毕业设计毕设作品(8)毕业设计论文模板
- vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
- 我抓住了腾讯的小尾巴
- 一个与微软大数据产品经理交流的机会 | 独家