zoukankan      html  css  js  c++  java
  • gcc和gdb

    Linux doc   by: zollty

    gcc编译命令如下:

    gcc test1.c……默认编译产生的可执行文件为a.out

    gcc test1.c -o test1.out…参数-o test1.out用于将生产的可执行文件命名为test1.out

     

    实际上编译分3个阶段,预处理、编译、汇编,每个阶段生成不同的文件,分步编译如下:

    gcc -E test.c -o test.i,在预处理之后停下来,输出中间文件*.i

    gcc -S test.i -o test.s,在编译之后停下来,输出汇编语言文件*.s

    gcc -c test.s -o test.o,在汇编之后停下来,输出二进制机器代码文件*.o

    gcc test.o -o test,最后链接阶段,将*.o文件和其他机器代码文件、库文件汇集成一个可执行的二进制代码文件。

    这几个过程可以简化成

    gcc test.c -o test

    还有两种常见写法:

    gcc -g test.c -o test

    gcc test.c -g -o test

    这两种写法是为准备gdb调试用的,所以加上了-g,没有这个参数编译后的test无法用于gdb调试。

     

    gdb调试C程序

    先要用gcc编译,见上面写的两条命令。然后就可以用gdb来调试了。

    gdb常用命令如下:

    gdb -q test或者gdb -q然后file test

    quit

    kill

    run

    continue

    step

    next

    stepi

    nexti

    list

    search向前查找,等同于forward

    reverse-search向后查找

    shell例如shell ls

    break例如break 7或break fun1或break 7 if i==99

    watch例如watch i==99,当i==99值发生变化时会停下来

    info breakpoints

    clear例如clear 7(行号)或clear fun1或clear(清楚全部断点)

    delete例如delete 2(断点编号)

    enable

    disable例如disable 2(断点编号)

    print例如p sum或p i<n或p i=200(赋值)

    set赋值,例如set variable i=200

        用p(print)命令显示变量或表达式的值,每次执行n后都要执行p非常麻烦,可以用display [expr]设置自动显示。例如:

    display a[i]……………………设置a[i]为自动显示

    disable display………………禁用自动显示

    enable display………………恢复自动显示

    delete display………………删除

        next,step等都是单步执行,设置连续执行的步数:cont,例如:

    cont 13……………程序连续执行13步

    注:linux下调试程序用图形化界面的kdbg或者ddd比DBG更加方便,下图是kdbg的界面。

     

  • 相关阅读:
    单div绘制多元素图
    js笔试题系列之二——数组与对象
    JS设计模式——策略模式
    js笔试题系列之三——函数
    zepto.js中的Touch事件
    java定时任务之Scheduled注解
    汤姆大叔送书,咱也科学抢书
    Asp.net Mvc自定义客户端验证(CheckBox列表的验证)
    摆脱烂项目
    我的ORM发展史
  • 原文地址:https://www.cnblogs.com/zollty/p/2879289.html
Copyright © 2011-2022 走看看