美文网首页
国产bmc项目bug调试总结

国产bmc项目bug调试总结

作者: qianlihu | 来源:发表于2018-01-02 09:21 被阅读55次

    1、代码逻辑不清晰,if嵌套过多。
    2、代码逻辑不清晰,逻辑代码书写较为分散

      rc = sqlite3_open(DB_NAME, &db); //逻辑分散
          if (rc) {
              fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
              sqlite3_close(db);
              return cJSON_CreateObject();
          }   
      
          cJSON * p;
          p = cJSON_GetObjectItem(params, "action");
          if (p == NULL)
              return cJSON_CreateObject(); //存在资源泄漏问题
          else
              PowerPolicy = p->valueint;//逻辑不清晰导致if过多
          string sql = "";
    
    

    建议写法:

    cJSON * p = cJSON_GetObjectItem(params, "action");
    if(p == NULL)
      return cJSON_CreateObject();
    int powerpolicy = p->valueint;  
    int rc= sqlite3_open(DB_NAME, &db); //逻辑分散
          if (rc) {
              fprintf(stderr, "Can't open database");
              return cJSON_CreateObject();
          }   
    ...
    

    3、调试日志不规范。
    建议:
    调试时候 打印时间戳,线程号,当前文件和行号,调试信息,可如下设计API
    c实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    #include <time.h>
    #include <pthread.h>
    
    
    
    void _debug(const char *filename,int line,const char *fmt,...)
    {
            char buf[1024];
    
            va_list ap; 
            va_start(ap,fmt);
            vsnprintf(p,size,fmt,ap);
            va_end(ap);
    
            time_t t = time(NULL);
            printf("%u-%s:%d-%p %s\n",t,filename,line,pthread_self(),buf);
    }
    

    .h头文件

    #define debug(fmt,...)    _debug(__FILE__,__LINE__,fmt,__VA_ARGS__)      
    

    4、API接口设计不合理,没有遵循谁申请,谁释放原则。

    cJSON* send_request(char const *ip,uint16_t port,char const *method,int id, cJSON* params)
    

    1、不应该在send_request中释放参数申请的内存。
    2、返回参数最好传入指针。(副作用,不释放)

    5、代码中没有处理好定时和异步任务。
     1、能不用信号的地方,就不要用信号。
      2、框架上有定时器,必要的时候可以增加API

    6、调试技巧
    1 查看资源占用情况
    1. top
    2 lsof
    3 进入/proc/pid/  查看线程数量。
     有异常处理异常。

    gdb 抓到信息发现比较难分析的话,就放弃gdb,利用日志解决。

    相关文章

      网友评论

          本文标题:国产bmc项目bug调试总结

          本文链接:https://www.haomeiwen.com/subject/qkqwgxtx.html