随笔 - 41,  文章 - 0,  评论 - 0,  阅读 - 17165

常用网站:
        CPP : http://www.cplusplus.com/
        linux man pages(linux 系统本地也有) : https://linux.die.net/man/
        stack overflow : https://stackoverflow.com/
    DEBUG 工具:
        CGDB : https://www.gnu.org/software/gdb/download/
            gcc -g 保留debug 信息,设定程序断点,通过print 打印变量在当前的值
            使用gdb 调试程序:
            gdb ./a.out
             l:(打印出10 行代码,可指定开始行数)
             b: 设置断点在某行或某个函数
             r: 执行程序到某个断点
             p: 可打印当前某个参数的值,或者 p ++age[0] 执行某个参数更改,会对后续程序操作产生影响
             c:  继续执行,直到下一个断点
             n: 执行下一条语句,并暂停

        Valgrind :  https://www.valgrind.org/
                   主要用于查看内存泄漏,多线程同步问题. 例如动态分配内存后,没有释放内存,编译/运行不会出错,这个可以告诉你程序在哪里出现内存泄漏


31 .gdb 使用方法:
    a. 编译时候要有 -g;
    b. 使用时候 gdb ./a.out
    c. l 或者 l 20              //会列出带行号10行的程序
    d. b func 或者 b 行号       //设定程序断点
    e. r                        //程序开始运行,需要传参的,后面跟参数就可以了
                                //前面设定断点的,会暂停在断点位置
    f. p 表达式:例如 l ++arg[0] //表示在当前断点出运行这个表达式,并查看它的值
       print &i                 //对变量值更改,会对之后程序运行造成影响
    g. n (next 意思)            //程序会执行暂停后下一条语句,并再次暂停
    h. c (continue 意思)        //程序会继续执行到下一个断点再暂停

基础命令(深入理解计算机系统):

 

 

 

 1. DEBUG 方式:   g++ -DDEBUG  编译实现是否要使用DEBUG,编译条件必须是DDEBUG(两D)
        #ifdef DEBUG
            #define log(frm, args...) {\
                printf("func=%s:line=%d\n", __func__, __LINE__);\
                printf(frm, ##args);\
            }
        #else
            #define log(frm, args...)
        #endif

    include <math.h> :编译方式 gcc 127_ojx.c -lm


posted on   学海一扁舟  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示