普法安利一个调试debug小技巧

        普法安利一个调试debug小技巧



引言

  博客沉寂很久,肯定不是干坏事被抓吃公交粮食去了!而是最近忙着给OpenHarmony鸿蒙适配GPU渲染加速。尼玛,其中的各种坑啊,填了一个又一个,其中最最拖延了开发进度的事情就是给鸿蒙适配我司的GPU的时候,无法使用鸿蒙自身的hilog调试!不能查看调试相关打印信息,你说这个还能继续下去吗。辛亏最最后想到了一种间接的调试小技巧,通过函数回调OpenHarmony鸿蒙进行相关打印。

也许读者会说,一个打印调试信息的东东也能拿出来分享,真的朋友那我只能说你是没有遇到过这种情况:
1.当你的应用尝试使用写文件保存日志的时候,系统提示你没有权限
2.当你的Native C/C++应用可以使用GPU GL完美运行,而App应用却一直不能OK的时候
3,当你的第三方库使用的是gcc,而OpenHarmony使用的是clang才能使用hilog的时候
你就会体会到我下面要说的调试技巧有多么重要了。




一.万能调试技巧

  当你在一个操作系统上移植第三方库时候,由于种种原因第三方库无法直接使用操作系统的debug接口,那么真的没有办法了吗,这里我提供一种方法就是通过函数回调操作系统的debug接口,做到围魏救赵,曲线救国的目的。这里简单的描述下具体步骤:

  • 第三方库添加一个回调函数接口
typedef void (*fun_t)(char * format, ...);
void debugCallback (fun_t cb);
  • 调用者传入函数指针,供回调使用,如下
static void OS_HILOG_DEBUG(char *format, ...) {//回调函数
   va_list ap;
	char ptr[256]= {0};
	va_start(ap, format);
	vsprintf(ptr, format, ap);
	va_end(ap);
  LOGE("OS_HILOG_DEBUG %{public}s", ptr);
}
debugCallback(OS_HILOG_DEBUG);//引用第三方库,传入函数指针

  • 第三方库使用函数指针,回调操作系统打印
//头文件
typedef void (*fun_t)(char *format, ...);

extern  fun_t ohoscallback;

extern void
debugCallback(fun_t);


//实现
fun_t ohoscallback = NULL;
void debugCallback(fun_t cb){
   ohoscallback = cb;
}


//具体使用
if(ohoscallback != NULL){
   ohoscallback("%s", "Hello!");
}



好了,核心思想就是上面的几点了。




写在最后

  好了,打卡收工下班。今天的博客普法安利一个调试debug小技巧就到这里了。总之,青山不改绿水长流先到这里了。如果本博客对你有所帮助,麻烦关注或者点个赞,如果觉得很烂也可以踩一脚!谢谢各位了!!最后附上完整的相关改动点,希望能帮助到各位!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值