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

南京 网站开发什么待遇啊网站开发时遇到的问题

南京 网站开发什么待遇啊,网站开发时遇到的问题,如何在wordpress安装编辑器,茶叶网站建设目的学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 上一篇文章我们学习了gcc编译器的相关内容。点击查看上一篇文章#xff1a;gcc编译器。本篇文章接着上一篇文章#xff0c;学习GNU为GCC提供的辅助开… 学习交流加 个人qq 1126137994个人微信 liu1126137994学习交流资源分享qq群 962535112 上一篇文章我们学习了gcc编译器的相关内容。点击查看上一篇文章gcc编译器。本篇文章接着上一篇文章学习GNU为GCC提供的辅助开发工具集Binutils。Binutils工具集主要是用于在代码调试的时候定位bug的一些手段。我们主要学习以下几个工具的使用 本篇文章先学习使用addr2line与strip工具。 文章目录1、addr2line工具2、strip工具3、总结1、addr2line工具 首先我们要知道gcc编译程序的时候加上-g选项表示在目标文件中生成调试信息。几乎所有调试辅助工具都依赖于程序的调试信息。 addr2line工具。顾名思义可以将地址转换为行号。它常用于分析定位内存访问错误的问题。以实际例子为例 test.c程序 #include stdio.hint g_global 0; int g_test 1;extern int* g_pointer; extern void func();int main(int argc, char *argv[]) {printf(g_global %p\n, g_global);printf(g_test %p\n, g_test);printf(g_pointer %p\n, g_pointer);printf(g_pointer %p\n, g_pointer);printf(func %p\n, func);printf(main %p\n, main);func();return 0; }func.c程序 #include stdio.hint* g_pointer;void func() {*g_pointer (int)D.T.Software;return; }我们在linux下编译以下程序注意我使用gcc-4.4.5版本编译没有警告显示。但是使用较高版本的gcc编译器可能会有警告。这里我们忽略警告 gcc -g func.c test.c -o lyy 运行程序 ./lyy 显示结果为 其实结果也在意料之中。我们分析程序很容易知道func函数中 *g_pointer (int)D.T.Software; 这句话使得在0地址赋值了。因为int* g_pointer;只是定义了g_pointer却没有赋值那么g_pointer实际上一开始是指向0地址后面又对它进行赋值。相当于对0地址进行操作。 但是我们知道0地址是不能被操作的。所以会产生段错误。这个程序很短问题我们很容易发现。但是如果这个歌程序有一千行一万行的话那么问题就很难定位到。此时addr2line工具就能够上场。 下面来说明如何使用addr2line工具。 首先开启core dump选项。使用命令ulimit -c unlimited。开启这个选项后在运行可执行程序的时候会将程序崩溃前最后一刻的内存状态信息转储保存到一个core文件。这个文件叫做核心转储文件。我们可以通过读取该文件获取一些用于调试的信息。 开启core dump选项后再次运行可执行程序来生成core文件。 我们可以看到段错误后面显示核心已转储。此时查看当前目录的话就可以看到core文件。 读取core文件获取IP寄存器的值IP寄存器存的是当前CPU所要执行指令的值程序崩溃前最后一刻的IP寄存器的值就是崩溃的指令地址。使用dmesg core 命令读取core文件的内容显示内容最后部分如下 可以看到最后一刻IP寄存器的值为0x080483d1.出问题的代码就在这个地址处。但是我们无法知道这个地址处到底是个啥。但是可以利用addr2line工具将这个地址转换为代码中对应的行号。 使用addr2line定位对应的代码行。使用命令addr2line 0x080483d1 -f -e lyy 很明显已经找打原因是func.c程序的第7行。当从两万行大代码中找到这个错误也是很激动的 2、strip工具 实际上addr2line能够正常工作必须依赖于程序的调试信息。而我们在编译程序的时候也确实让程序生成了调试信息。如上编译的时候带的-g选项。 当可执行程序里面带有大量的调试信息会导致可执行程序非常的大。如果在大型的软件中软件在发布之前肯定是要将这些调试信息去掉好让发布出去的程序占用内存空间更小不然程序太大对用户来说也是非常不友好的。 其实这就是所谓的release版本的程序。在发布之前还需要调试的程序我们称为debug版本程序。 那么如何剔除调试信息使用strip工具如下图是release版本的程序大小为9074 使用strip将调试信息剔除后大小为5512: 结果显而易见 还有其他工具放在下一篇文章学习 3、总结 addr2line用于将代码地址转换为对应的行号。常用于定位内存访问错误的问题理解core dump选项。strip可以剔除目标程序中的调试信息从而可以减小目标代码的大小提升目标程序的执行效率。学会使用上述两个工具。 本文章参考狄泰软件学院相关课程 想学习的可以加狄泰软件学院群 群聊号码199546072 学习探讨加个人可以免费帮忙下载CSDN资源 qq1126137994 微信liu1126137994
http://www.yutouwan.com/news/478360/

相关文章:

  • 接入服务商网站备案管理系统技术规范要求如何建设网站兴田德润简介
  • 国外优秀门户网站抚州建设公司网站
  • 建网站维护需要多少钱九一人才网赣州招聘
  • 网站建设注意事项知乎广东工程建设监理有限公司网站
  • 做画找图网站海拉尔做网站多少钱
  • 搭建网站php源码百度小程序跟做网站
  • 网站设计配色建盏大师排名表及落款
  • 网站利润分析泰安网站建设推广优化
  • 电商建网站运营餐厅网站建设文案书
  • 网站建设合同属于什么合同简单的广告设计怎么做
  • 自我做t恤的网站北京做网站男生工资
  • dw做网站简单吗深圳网络推广代理
  • 能免费做片头的网站做网站代码编辑工具
  • 工信部网站备案名单自己免费制作app
  • 赤峰市建设厅官方网站ps教程网站有哪些
  • 基础网站建设代码网页设计心得体会100
  • 中国建设银行建银购网站长春关键词搜索排名
  • 手机版网站与app青岛工商注册核名查询系统
  • 免费发布广告信息的网站广州正规网站制作维护
  • 织梦响应式茶叶网站模板推广网站的四种方法
  • 微信小程序可以做视频网站吗网站开发发送短信
  • 建设征婚网站重庆市建设工程管理网
  • 数据管理网站模板海盐市网站建设
  • 石家庄网站开发公司做网站怎么qq邮箱验证
  • 青岛市蓝色经济区建设官方网站网页设计公司注册
  • 汤唯梁朝伟做的视频网站网站建好后
  • 网站注册协议模板陕西省住房和城乡建设部网站
  • 网站描述代码怎么写前端外包
  • 网站程序 wordpress 织梦 discuz好用的wordpress博客主题
  • 金银饰品那家网站做的好中天银都建设集团网站