• {转}linux gcc gdb使用


    今天学习了一下gcc与gdb的具体使用方法。并亲自用gdb调试了一下程序。gdb还是用不熟,只能以后慢慢加深体会了。(gdb刚开始用还真是不方便,也不知道如果做嵌入开发的话,有没有其它比较好的工具?如果有朋友知道,推荐一二,在此多谢啦!!)

    1GNU C编译器(即GCC

    gcc -v GCC版本

    -c:仅把源代友编译为目标代码;

    -sGCC在为C代码产生了汇编语言文件后,就停止编译。GCC产生的汇编语言文件的缺省扩展名为.s

    -E:指示编译器仅对输入文件进行预处理。此时,预处理器的输出被送到标准输出(如显示器)而不是储存在文件里。

    -OGCC对源码进行基本优化。

    -O2GCC产生尽可能小和尽可能快的代码

    -g选项告诉GCC产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。

    -pg选项告诉GCC在用户的程序里加入额外的代码,执行时,产生gporf用的剖析信息以显示程序的耗时情况。

    gcc info page:详细GCC编译器参数的说明,在Emacs内,按下Chi,然后选“gcc”的选项。

     

    2、使用gdb

    gdb filename:能直接指定想要调试的程序。也可用gdb去检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。

    1)为使gdb正常工作,必须使程序在编译时包含调试信息。调试信息包含程序里的每个变量的类型、在可执行文件里的地址映射以及源代码的行号。

    2gdb命令一览:

    file:装入想要调试的可执行文件

    kill:终止正在调试的程序;

    list:列出产生执行文件的源代码的一部分

    next:执行一行源代码但不进入函数内部;

    step:执行一行源代码而且进入函数内部;

    run:执行当前被调试的程序;

    quit:终止gdb

    watch:能监视一个变量的值 而不管它何时被改变;

    print:显示表达示的值;

    break:在代码里设置断点,这将使程序执行到这里时被挂起;

    make:不退出gdb就可以重新产生可执行文件

    shell:不离开gdb就执行UNIX shell命令

    3)可在gdb中按Tab键让gdb补齐一个命令。

  • 相关阅读:
    extel操作
    postman 使用post方式提交参数值
    json_encode 转化数组时,中文不转义出现乱码的解决方法
    csnd 不好使,所以我来博客园了
    Nodejs 之Ajax的一个实例(sql单条件查询&并显示在Browser端界面上)
    JS 之JSON
    Nodejs sql模块及模块化思想
    Nodejs之Ajax
    Nodejs 之express框架的应用---简单的登录界面
    Nodejs 入门 12-28
  • 原文地址:https://www.cnblogs.com/Cmpl/p/2100177.html
Copyright © 2020-2023  润新知