zoukankan      html  css  js  c++  java
  • gcc的调试调研——gdb

    首先来介绍一下gcc的选项:

     其他选项都为常用编译选项,在这里介绍一下优化功能:

      优化编译时使用选项:

        -O:可以告诉gcc同时减小代码的长度和执行时间,其效果等价于-O1,在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转和延迟退栈两种优化。

        -O2:可以告诉gcc除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。

        -O3:可以告诉gcc除了完成-O2所有级别优化外,话包括循环展开和其他一些与处理器特性相关的优化工作。

        通常来说:数字优化的等级越高,同时也就意味着程序的运行速度越快,-O2一般是一个比较理想的选项,它在优化长度,编译时间和代码大小之间,取得了一个比较理想的平衡点。

        注意:使用优化的时候一定注意程序中防止编译器过度优化代码,过度的优化代码时,和会出现一些逻辑上的问题。

    gcc的调试——gdb:

      gcc在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文件的大小。

      gdb的常用命令:

           回车键:执行上一次命令。

           info break:查看断点信息。

           finish:退出函数

      为什么调试的时候需要编译选项中添加 -g ?

        -g:

        该选项可以利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息,

        如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址

        -ggdb

        使 GCC 为 GDB 生成专用的更为丰富的调试信息,但是,此时就不能用其他的调试器来进行调试了 (如 ddx)

      使用gdb调试的时候需要在编译的时候加入命令符:-g

      • gcc  -g main.c -o main
      • 这样才能生成一个可以调试的可执行文件main
      • 接下来输入调试命令:
      • gdb mian
      • 进入gdb调试中,输入命令:run 运行起来
      • 之后就会提示你相应的错误。
      • (还可以使用其他命令,如:break,给程序打断点;print,查看具体的变量值等等)

      gdb主要提供的功能:

        设置断点(断点可以是条件表达),使程序在指定的代码行上暂停执行,便于调试;

        单步执行程序,便于观察;

        查看程序中变量值的变化;

        动态改变程序的执行环境;

        分析崩溃程序产生的core文件;

     

      

  • 相关阅读:
    SAP中的文档维护
    SAP日期处理函数汇总(转)
    PR PO通过fm创建时,如何传输增强字段
    html+jQuery简单的利息计算器
    上传项目到github
    Nodejs-毕业设计5-小技巧
    Nodejs-毕业设计4-登录页面
    Nodejs-毕业设计3-路径
    Nodejs-毕业设计2-下载依赖准备工作
    Nodejs-毕业设计1-部署环境
  • 原文地址:https://www.cnblogs.com/cuckoo-/p/10740281.html
Copyright © 2011-2022 走看看