zoukankan      html  css  js  c++  java
  • gdb命令的常用调试选项

    cc -g -o debug3 debug3.c   [调试性编译,生成可调试执行程序]

    gdb debug3     [进入gdb调试模式]

    (gdb)run       [开始运行]

    (gdb)backtrace  [栈跟踪]

    (gdb)print j  [打印输出变量j]

    (gdb)print a[3]  [打印输出a[3]]

    (gdb)list    [列出程序源代码]

    (gdb)help breakpoint    [列出与设置断点有关的命令]

    (gdb)break 21     [在第21行设置一个断点]

    (gdb)run          [运行]

    (gdb)print array[0]    [打印输出array[0]]

    (gdb)print array[0]@5  [打印输出指定数目(5)的数组元素]

    (gdb)cont         [继续执行]

    (gdb)display array[0]5 n   [display表示每次停在断点n时,就显示数组内容,n不指定则为1]

    (gdb)commands n       [指定程序在到达断点n时需要执行的调试器命令,n不指定则为1]

       >set variable i=i+1   [改变某个变量的值]

       >cont [程序在到达断点时就执行cont,即继续执行]

       >end            [命令设置完毕]

    (gdb)quit

    总结以上,重要选项:run,,list,print,break,display,cont,commands

    在编译时可以加上编译器标志-DDEBUG。加了这个标志,就是定义了DEBUG符号,使得程序中所写的代码比如

    #ifdef DEBUG

             printf...

    #endif

    就会获得执行从而进行打印输出信息,如果未加上该标志,编译时将会删除这些调试代码。

    1.使用fgets要注意判断最后一个字符是否“\n”,是则字符部分总长度应减1.

    char *fgets(char *restrict buf, int n, FILE *restrict fp);

    fgets的最后一个参数是一个FILE指针,而不是fd,FILE指针需要通过Fopen得到。

    2.open与fopen的区别?都是以路径名为参数,返回值open是fd,fopen返回的是FILE pointer,用于f系列函数。

    #include <fcntl.h>

    int open(const char *pathname, int oflag, ... /* mode_t mode   */ );

    oflag值为O_RDONLY/O_WRONLY/O_RDWR/O_APPEND/O_CREAT/O_NONBLOCK/O_DSYNC....

    #include <stdio.h>

    FILE *fopen(const char *restrict pathname, const char *restrict type);

    type值为"r"、"w"、"r+"、"w+"

  • 相关阅读:
    简练软考知识点整理-规划采购管理
    简练软考知识点整理-规划采购管理
    简练软考知识点整理-控制风险
    简练软考知识点整理-控制风险
    简练软考知识点整理-规划风险应对
    简练软考知识点整理-规划风险应对
    玩玩postman(一)
    JMeter 通过JSON Extractor 插件来提取响应结果
    31大 一般测试场景
    搜索功能、翻页功能、输入框的测试用例设计及知识
  • 原文地址:https://www.cnblogs.com/edgarli/p/2691680.html
Copyright © 2011-2022 走看看