zoukankan      html  css  js  c++  java
  • Linux开发工具之gdb(上)

    三、gdb调试(上)
    01.gdb:gdb是GNU debugger的缩写,是编程调试工作。
    功能:
      启动程序,可以按照用户自定义的要求随心所欲的运行程序;
      可让被调试的程序在用户所指定的调试的断点处停住(断点可以是条件表达式);
      当程序停住时,可以检测此时程序中所发生的事;
      动态改变量程序的执行环境。
    #vi smiple.c
    #include<stdio.h>
    #include<stdlib.h>
    long func(int n);
    int main(int argc, char *argv[])
    {
    printf("Entering main ... ");
    int i;
    long result = 0;
    for(i=1;i<=100;i++)
    {
    result += i;
    }
    printf("result[1-100] = %ld ",result);
    printf("result[1-10]",func(10));
    return 0;
    }
    long func(int n)
    {
    long sum = 0;
    int i;
    for(i=1;i<n;i++)
    {
    sum+=1;
    }
    return sum;
    }
    :wq
    #gcc -Wall -g(以便生成调试,将源文件显示出来) simple.c -o 
    simple
    #./simple
    #gdb simple
    (gdb)list(显示所有源代码)
    (gdb) l(同上)
    (gdb)break 10(在第10行设置断点)
    (gdb)info break(查看断点信息)  --ib(简写)
    (gdb)b func(在函数入口设置断点)
    (gdb)run --r(运行到断点处)
    (gdb)step --s(单步跟踪)
    (gdb)print i --p i(打印出i的当前值)
    (gdb)p result
    result=3
    (gdb)p i
    (gdb)s
    (gdb)until(跳出for循环,循环的下一条语句)
    (gdb)c(continue运行到下一个断点处)
    (gdb)直接按回车,使用上一次的命令
    (gdb)finish(结束单步调试)
    #vi Makefile
    .PHONY:clean all
    CC=gcc
    CFLAGS=-Wall -g
    BIN=simple main
    all:$(BIN)
    $(CC) $(CFLAGS) -c $< -o $@
    main:main.o search.o
    $(CC) $(CFLAGS) &^ -o $@
    clean:
    rm -f *.o $(BIN)
    :wq
    #gdb simple
    (gdb)r a b c(给程序加上启动参数)
    (gdb)list fun(查看fun的函数源码)
    (gdb)list file:fun(查看file文件中的fun函数源码)
    02.设置断点与观察点
    break 行号
    break fun
    break file:行号
    break file:fun
    break if<condition>-条件成立时程序停住
    info break(i b)-查看断点
    watch expr -变量expr值发生改变,程序停住
    delete n - 删除断点
    03.单步调试
    continue(c)-运行至下一个断点
    step(s)- 单步跟踪,进入函数,类似于VC中的step in
    next(n)-单步跟踪,不进入函数,类似于VC中的step out
    finish - 运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数等信息。
    until - 当厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体
    print(p)查看运行时的变量以及表达式
  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/baiyifan/p/5282141.html
Copyright © 2011-2022 走看看