当前位置: 首页 > news >正文

东莞p2p网站开发费用2017网站设计

东莞p2p网站开发费用,2017网站设计,成都高端网页设计公司,中山移动网站建设公司上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试#xff1a;【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试本篇文章继续上一篇文章的学习#xff0c;如何使用GDB的数据断点监测内存中的变量是否被改变 文章目录1 GDB的数据断点1.1 利… 上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试本篇文章继续上一篇文章的学习如何使用GDB的数据断点监测内存中的变量是否被改变 文章目录1 GDB的数据断点1.1 利用查看内存的x命令进行系统大小端的判断2 使用GDB进行监视变量的改变与查看内存实际代码案例分析3 总结 1 GDB的数据断点 先来了解一下什么是GDB中的数据断点 在GDB中设置数据断点用于监测一个内存中的变量在程序运行的时候如果该变量被改变则程序就会被GDB终止执行并显示变量被改变的地方。数据断点的本质是硬件断点在GDB中使用watch命令来设置数据断点watch命令的用法为watch var_name 可以使用watch进行设置数据断点我们还可以查看程序运行中的所有内存中的数据。 命令语法为 x /Nuf address 其中/Nuf中的N、u、f三个位置的含义是 N - 需要打印的单元数u - 每个单元的大小比如字节字双字等f - 数据打印的格式 如八进制十六进制等 如下图示例是显示4个单元每个单元为1字节以十六进制数显示 x 命令中参数u对应的几种单位 打印格式对应的几种选项 1.1 利用查看内存的x命令进行系统大小端的判断 学会了x命令的用法可以按如下图的方式判断系统大小端 2 使用GDB进行监视变量的改变与查看内存实际代码案例分析 watch.c程序 #include stdio.h #include pthread.h #include unistd.hint g_var 0;void* thread_func(void* args) {sleep(5);g_var 1; }int main() {int i 0;pthread_t tid 0;pthread_create(tid, NULL, thread_func, NULL);for(i0; i10; i){printf(g_var %d\n, g_var);sleep(1);} } 上面的程序非常的简单就是在main函数中创建一个线程thread_func,然后在thread_func函数中改变一个全局变量 首先我们先编译运行上述程序 gcc -g -lpthread watch.c -o test.out 运行结果如下动态图 我们可以看出我们程序跑着跑着g_var变量就变了。假设这个变量我们不想让它改变但是有时候你调用了其他人写的接口函数很有可能就把我们不想改变的变量改变了所以这个时候需要找到变量在什么时候被改变以及在哪里被改变。 上述是一个小程序所以我们很容易知道是在thread_func函数中改变的g_var变量而且也能够知道在什么时候变量被改变。但是如果在一个大型程序中就很难查找。 此时GDB的数据断点就派上用场了。 我们可以使用GDB对变量g_var进行数据断点的设置当g_var发生变化时程序就会自动停止运行此时我们就可以知道程序运行到哪里了。 首先依次输入以下命令 gdb tset.outstart 进入到GDB调试模式并启动程序后再程序入口处停止。 然后使用watch命令对g_var变量设置数据断点 watch g_var 并使用info breakpoints 查看断点是否设置成功 上述步骤如下图所示 打好数据断点后让程序执行输入continue命令即可显示如下动态图所示 上述动态图中运行着运行着就停止了停止后显示如下 从上述图中我们可以知道在watch.c程序的thread_func函数中的12行导致了g_var的改变是从Old value0改变到New value1的。我们很容易就找到了发生改变的地方如果在大型程序中这是很快。 当然我们还可以使用上面学习的 x 命令来查看g_var所在内存的内容。首先我们需要查看g_var变量的的内存地址 print /a g_var 输入这条命令显示如下 得到g_var的地址后使用 x 命令查看它的内存查看方式是4单元1字节16进制方式如下图 很明显我们显示了g_var内存地址的连续4字节的内容。 到此我们已经通过这个简单的示例学会了如何检测程序运行过程中的内存变化。例子随简单但是也能够提现内存监测的重要性。 3 总结 本文学会使用GDB 进行内存监测学会如何使用GDB数据断点调试程序 本文章参考狄泰软件学院相关课程 想学习的可以加狄泰软件学院群 群聊号码199546072 学习探讨加个人可以免费帮忙下载CSDN资源 qq1126137994 微信liu1126137994 学习交流资源分享qq群962535112
http://www.zqtcl.cn/news/431371/

相关文章:

  • 五合一网站建设费用python 做网站 用哪个框架好
  • 波莱网站开发动态域名可以做网站吗
  • 网站建设 赣icp 南昌面馆装修设计
  • 福田附近公司做网站建设多少钱网站建设文献综述范文
  • 镇江网站建设设计建设银行投诉网站首页
  • 石家庄个人做网站广州全网络营销
  • html5网站建设加盟wordpress 4.8.6
  • 携程网站建设的基本特点哈尔滨做平台网站平台公司
  • 网站建设入门解读国模 wordpress
  • 网站购物车js代码怎么做制作app的软件有哪些
  • 36氪网站用什么程序做的互联网门户网站建设
  • 视频聚合网站怎么做不侵权wordpress 管理员插件
  • 传媒网站后台免费模板网站建设的进度计划
  • 如何做网站排名合肥全网优化
  • 网站建设招聘信息官网 wordpress
  • 城阳网站开发公司网页制作与设计在哪搜题
  • 做网站算运营吗grace wordpress
  • 厦门建设网站建站制作网页动画的软件
  • 百度提交网站收录入口郑州网站app开发
  • 自己的身份已经网站备案了品牌建设目标包括哪些方面
  • 中国免费网站服务器下载保定网站制作系统
  • 深圳app网站设计数据库网站建设公司
  • 手机网站程序下载做地方黄页网站
  • 网站开发时如何设计英文版本专业vi机构
  • 黄骅市人事考试网电商网站怎样优化
  • 可信网站认证必须做吧陕西做网站的
  • 网站怎么静态化wordpress视频安装教程
  • 合浦县建设局网站网站备案号如何查询
  • 网站跳转代码 html亚马逊使用wordpress做的
  • 做哪一类的网站可以短时间变现东莞大朗网站设计