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

河南省住房城乡建设厅官方网站泰安网红人物

河南省住房城乡建设厅官方网站,泰安网红人物,如何在工商局网站做企业年报,wordpress下拉菜单不显示文章目录 查看源码是否编译时有-g调试信息和符号表在 gdb 中加载 debug 文件/符号表将 debug 文件放入 .debug 文件夹通过 gdb 命令 set debug-file-directory directories GCC的gcc和g区别指定gcc/g#xff0c;glibc的版本进行编译指定gcc/g的版本指定glibc的和l… 文章目录 查看源码是否编译时有-g调试信息和符号表在 gdb 中加载 debug 文件/符号表将 debug 文件放入 .debug 文件夹通过 gdb 命令 set debug-file-directory directories GCC的gcc和g区别指定gcc/gglibc的版本进行编译指定gcc/g的版本指定glibc的和ld版本 apt安装后软件所在路径gdb寻找单独的debug文件的路径gdb带源码调试libcgdb寻找源码的路径 gdb带源码调试libc 查看编译是否是debug模式 使用gcc生成动态库及使用动态库的方法 查看源码是否编译时有-g -g编译的可执行性程序多了很多.debug开头的段 而没有加-g的没有 调试信息和符号表 这里说的调试信息指的是 debug_* 相关信息符号表是指 symtab 和 dynsym。gdb 对这两种信息进行解析和加工得到的信息在 gdb 内部统称为符号表。 调试信息需要带上 -g 编译选项才能产生。 其实符号表包括 symtab 和 dynsym 两种。在没有 -g 编译也会产生在重定位过程中需要处理。 symtab 包括两种类型符号全局符号和本地静态符号。dynsym 仅仅包加载动态库所需要的符号。 在 gdb 中加载 debug 文件/符号表 参考链接 在使用 GDB 调试的时候就不容易看到 libc 中的各种结构。所以我们需要加载符号表来方便调试。 Ubuntu 的软件维护者在编译对应的 ELF 文件时会将符号表与 ELF 文件分离将符号表命名为 “*-dbg.deb”。这样我们就可以通过手动下载符号表来方便调试。 如果是使用 “glibc all in one” 下载的 libc会在 libc 等库放置的位置使用 “.debug” 文件夹存放好了 libc 的符号表使用 gdb 可以自动加载。但是碰到 “glibc all in one” 没有的 libc 版本时就需要手动下载 debug 文件并手动加载了。 将 debug 文件放入 “.debug” 文件夹 在放置 libc 的目录下新建 .debug文件夹将 debug 文件放入其中即可。 通过 gdb 命令 set debug-file-directory directories 我们需要将 libc 等库的 debug 文件放入对应文件夹并通过 set debug-file-directory $directories 命令将文件夹设为分离的 debug 文件目录就可以让 gdb 加载 debug 文件。 GCC的gcc和g区别 GCC:GNU Compiler Collection(GUN 编译器集合)它可以编译C、C、JAV、Fortran、Pascal、Object-C、Ada等语言。 gcc是GCC中的GUN C CompilerC 编译器 g是GCC中的GUN C CompilerC编译器 一个有趣的事实就是就本质而言gcc和g并不是编译器也不是编译器的集合它们只是一种驱动器根据参数中要编译的文件的类型调用对应的GUN编译器而已比如用gcc编译一个c文件的话会有以下几个步骤 Step1Call a preprocessor, like cpp. Step2Call an actual compiler, like cc or cc1. Step3Call an assembler, like as. Step4Call a linker, like ld 由于编译器是可以更换的所以gcc不仅仅可以编译C文件 所以更准确的说法是gcc调用了C compiler而g调用了C compiler 指定gcc/gglibc的版本进行编译 不同版本的GCC实现了不同版本的c和c标准库。这对代码的兼容性有一定影响。每个版本的gcc和标准库版本的对应关系可以在官方文档中找到。使用不同版本的标准库可能会导致代码编译和运行的行为发生不同甚至会报错。因此在编写代码时应该了解所使用的标准库版本并避免使用已经废弃或不再维护的标准库。 指定gcc/g的版本 export CCgcc的路径 export CXXg的路径 指定glibc的和ld版本 通过设置环境变量LD_LIBRARY_PATH增加默认库文件搜索路径会优先匹配我们提供目录中的libc 通过gcc 的-L参数指定glibc库(libc.so)的路径 在gcc的编译参数中指定 -Wl,–dynamic-linkerglibc中动态链接器的路径如下 -Wl,--dynamic-linker/动态连接器的路径/ld-linux-x86-64.so.2 apt安装后软件所在路径 参考链接 dpkg -L 软件包的名字可以知道这个软件包包含了哪些文件 这个方法可以列出所有安装后留在系统里的文件查询系统中已安装的软件包所安装的位置. 系统安装软件一般在/usr/share可执行的文件在/usr/bin配置文件可能安装到了/etc下等。 文档一般在 /usr/share 可执行文件 /usr/bin 配置文件 /etc lib文件 /usr/lib gdb寻找单独的debug文件的路径 参考链接 gdb寻找单独的debug文件的路径是 当前文件所在的目录。当前文件所在目录下的.debug目录。debug-file-directory设置的目录下寻找当前可执行程序的调试信息会根据文件所在的实际路径组合去寻找。比如debug-file-directory设置的目录为/usr/lib/debug 一个可执行文件所在的目录是/home/test/example,那么gdb就回去/usr/lib/debug/home/test/下去寻找example.debug文件如果是要寻找动态库文件.so的调试信息则会使用ldd所显示的目录。可以直接使用debug-file-directory目录ldd显示目录进行拼接即可。比如debug-file-directory设置的目录为/usr/lib/debugldd显示出来的liba.so的路径是/home/zy/debuginfo/fff/liba.sogdb就会去/usr/lib/debug/home/zy/debuginfo/fff目录下去读取liba.so所对应的debuginfo文件 set debug-file-directory directories Set the directories which GDB searches for separate debugging information files to directory. Multiple path components can be set concatenating them by a path separator.show debug-file-directory Show the directories GDB searches for separate debugging information files.如前所述如果将debuginfo文件直接放到/usr/lib/debug目录或者通过set-debug-file-directory命令设置的根目录下也是可以的但文件目录的组织结构必须和运行时的目录组织结构一样这个地方有一个需要注意的地方特别是对于so文件在debug-root-directory目录下寻找对应的debuginfo文件时和文件实际所在的位置不一定完全一致而要看连接器能够找到的路径即ldd所显示的路径。gdb是会到debug-root-directory/$LDD显示的目录下去寻找对应的debuginfo文件。而ldd显示出来的路径可能是一个绝对路径也可能是一个相对路径者取决于你的操作系统中所设置的一些so查找路径比如LD_LIBRARY_PATH设置为一个相对路径还是一个绝对路径对于gdb来说去debug-root-directory目录下寻找的路径也不一样。gdb会拿ldd显示出来的路径直接和debug-root-directory拼接一下。比如我当前的LD_LIBRARY_PATH设置为./fff那么gdb就会去/usr/lib/debug/./fff目录下去读取liba.so所对应的debuginfo文件因为ldd现实出来的liba.so的路径是./fff/liba.so。 gdb带源码调试libcgdb寻找源码的路径 在使用gcc编译时如果采用带-g选项编译即可在二进制文件中附加调试信息以便gdb进行源码级别的调试。如果二进制中存在调试信息会去相关目录寻找源码GDB首先在编译时目录中搜索如果失败则在当前目录中搜索即$cdir:$cwd其中$cdir指的是编译时目录compilation directory$cwd指的是当前工作目录current working directory。如果找到了源码文件则可以使用gdb的list命令来查看源码。 通过在ubuntu中安装带调试信息的libc并下载libc源码即可配置gdb跟入libc的库函数后进行源码级别的调试 不过如果我们gdb在默认寻找的目录中找不到源码文件则无法进行源码调试。如果源码在其他目录可以在gdb中用directory或dir命令指定或者在启动gdb时用-d参数指定一样可以看到源码。 libc6-dbg是一个包含C标准库调试符号的调试信息包 sudo apt install libc6-dbg sudo apt install libc6-dbg:i386libc6-dev 当前gcc编译链接时使用的版本的libc库源码 首先修改/etc/apt/sources.list将deb-src配置开启更新sudo apt update使用apt source下载源码apt source libc6-dev 然后在调试时用directory把目录指向对应子文件夹就可以了比如我要调试malloc gdb -q ./可执行性文件 -d 下载的libc库源码文件夹路径/malloc或者是在gdb中直接用directory directory 下载的libc库源码文件夹路径/malloc
http://www.pierceye.com/news/909580/

相关文章:

  • 企业策划 企业网站建设 品牌设计下载住小帮app看装修
  • wordpress文章内图片不显示不出来成都seo整站
  • 鞍钢节能公司网站开发陈仓网站建设
  • 手机网站怎样排版最好东莞常平招聘网最新招聘信息
  • 网站推广途径选择com域名和网站
  • 建设网站后如何上线免费的网站app下载
  • 哪些动物可以做网站名天津免费建站
  • 网站关键字优化技巧如何做推广麦当劳的网站
  • 广州公司注册场地要求网站怎么优化排名的方法
  • 自己做网站用什么软件建设银行网站联系电话
  • 做一个论坛网站需要多少钱推广型网站制作公司
  • 网站介绍页面网站建设怎么找客户资源
  • 我的百度网盘登录入口大兵seo博客
  • 注册监理工程师注册查询系统关于进一步优化 广州
  • 建设网站怎样挣钱网页设计培训班哪里好
  • 类似+wordpress+建站wordpress教程视频教程
  • wordpress多个网站百度识图扫一扫入口
  • 广州网站建设的费用网站建设外包必须注意几点
  • 蓬莱做网站公司辽宁省网站备案要求
  • 西安做网站价格女装标题优化关键词
  • 三门峡市建设局网站wordpress安装伪静态
  • 校园兼职网站开发用例图最厉害的搜索引擎
  • 企业网站seo哪里好10黄页网站建设
  • 中国空间站网站色彩的应用
  • 网站分为哪些部分组成部分wordpress 用户密码加密方式
  • 产品展示栏目在网站中的作用电子商务网站建设实训方案
  • 做外贸网站需要请外贸文员吗pc端设计网站
  • 免费按模板制作微网站厦门十大软件公司
  • 免费网站模板在哪下载什么网站做的最好
  • 在智联招聘网站做销售医疗软件网站建设公司排名