很多纯 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 内写脚本调试程序相关推荐

  1. url获取网站信息不包含网页源文件内的标签_前嗅ForeSpider链接抽取应用场景及链接在源码的html标签里写脚本...

    今天,小编给大家带来的教程为:前嗅ForeSpider脚本教程中,链接抽取的应用场景,以及链接在源码的html标签里写脚本的实战教程.具体内容如下: 一.应用场景 当需要手动添加链接时,可添加链接脚本 ...

  2. 怎么写脚本_直播脚本怎么写|请收下这份攻略

    "口红一哥"李佳琦为何那么牛,有人说是因为站在了风口上,有人说是因为他标志性的吆喝声.事实上,更大的因素在于他对每场直播的精心准备.比如,李佳琦推荐每款产品时,往往都会提炼出一个. ...

  3. python怎么换行继续写脚本_python怎么换行继续写脚本

    推荐手册:Python 基础入门教程 在python中,Python用反斜线 ("") 作为续行符(换行符),这里以python3.5为例.首先运行终端或者cmd命令行(windo ...

  4. python编写怎么换行_python怎么换行继续写脚本

    在python中,Python用反斜线 ("\") 作为续行符(换行符),这里以python3.5为例.首先运行终端或者cmd命令行(windows下).执行python3.5的命 ...

  5. python写的脚本怎么用,如何用python写脚本

    如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...

  6. 无师自通-自己学写脚本,小明外挂脚本代码教程 转载

    无师自通-自己学写脚本,小明外挂脚本代码教程 转载 2011-02-03 19:47:20| 分类: 石器脚本 assa | 标签:walkpos 指令 对话框 跳转 道具 |字号 订阅 下载LOFT ...

  7. python写地下城脚本下载_在python下写脚本的方法

    在python下写脚本的方法 发布时间:2020-07-18 11:43:36 来源:亿速云 阅读:68 作者:清晨 这篇文章主要介绍在python下写脚本的方法,文中介绍的非常详细,具有一定的参考价 ...

  8. AC68U梅林固件,从ipv6设置到写脚本手动绑定ddns,通过单ipv6实现公网访问

    目录 折腾起源 设置ipv6 DDNS设置部分 打开ssh端口及服务 进入ssh界面 方法一:套用jffs下自带的启动脚本 方法二:在梅林固件默认启动脚本目录下自建脚本 脚本实现部分 DDNS实现 l ...

  9. loadrunner写脚本常用C函数

    loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...

最新文章

  1. HJ75 公共字符串计算
  2. 互补输出级采用共集形式是为了使_互补输出级采用共集形式是为了使
  3. 设置textview背景色为透明
  4. android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...
  5. 安卓入门系列-08四大组件之Activity
  6. 将信号量代码生成静态库以及动态库
  7. getBoundingClientRect()来获取页面元素的位置”
  8. 2022计算机毕业设计如何选题?
  9. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
  10. WannaCry笔记
  11. 皇后游戏c语言,C语言中关于4皇后或8皇后问题!
  12. hdu5755 Gambler Bo(高斯消元)
  13. Python解释大数定律
  14. 第1.3章:StarRocks部署--单机部署
  15. UNetbootin使用
  16. Oracle ltrim() 函数详细用法
  17. 基于微信预约挂号小程序毕业设计毕设作品(8)毕业设计论文模板
  18. vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
  19. 我抓住了腾讯的小尾巴
  20. 一个与微软大数据产品经理交流的机会 | 独家

热门文章

  1. 一位软件工程师的6年总结(转载)
  2. xcode 学习笔记2:动态添加view
  3. “百度杯”CTF比赛 十月场 Hash 复现
  4. centOS上docker 的简单使用
  5. Zygote进程启动流程分析
  6. Java Web 相关面试题总结
  7. vue 1.0和vue 2.0的变化和区别
  8. qq空间等闪动的文字怎么做?
  9. 148. Sort List
  10. 如何在 Linux 上用 SQL 语句来查询 Apache 日志