zoukankan      html  css  js  c++  java
  • {转}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补齐一个命令。

  • 相关阅读:
    SVG路径字符串格式
    PHP pdf转化为图片(PNG)
    将博客搬至CSDN
    SAC学习笔记(一)——SAC安装
    《把时间当作朋友》读书笔记(十四)--积累(二)
    《把时间当作朋友》读书笔记(十四)--积累(一)
    《把时间当作朋友》读书笔记(十三)-- 应用(二)
    《把时间当作朋友》读书笔记(十二)-- 应用(一)
    《把时间当作朋友》读书笔记(十一)-- 交流
    Wixtools打包工具实战总结
  • 原文地址:https://www.cnblogs.com/Cmpl/p/2100177.html
Copyright © 2011-2022 走看看