- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK 调试培训
先看事例:自动对时功能
客户反馈不起做用;
测试反馈可以;
自己测试也可以;
试想可能会是什么问题?
一、出现BUG的调试的基本流程:
复现问题:自己复现不了,一定要及时的找到测试人员(our friend)帮助;
MTK的FAQ;
“翻旧账”;
寻求他人帮助;
确定问题点;(如果没有人遇到过,那就要尽可能的想到可能的原因)
自己动手;
记录问题的原因及解决方法;
整个过程要有 耐心和信心,而且要积极跟进;
二、团队的合作
学习他人的经验;
自己的经验与团队共享;
做好和其他人的沟通(一个项目手机打不出电话,不断的拨打不断的拨打,手机热了, 就能够打通了,但是放置一会儿就打不通了,最后知道是硬件的问题,LEO(一个供电的)质量问题,在低温下就不work了)
三、个人的要求
1)耐心、信心;
2)扎实的技术基础;
3)多学习他人经验:多看“无关”邮件、eservice上的issue、MTK文档等;
4)多读代码:问题模块的相关知识的了解;
小问题:
在file A里: S8 buffer【100】; sizeof buffer 在file B里: extern S8 buffer【50】; sizeof buffer extern S8 buffer【100】; sizeof buffer extern S8 buffer【】; sizeof buffer 四:调试技巧
trace:
例如MOD_MED 模块,在catcher工具里,选上MOD_MED 下的ALL_CLASS_ON,会把MED的分配情况显示出来;
如果串口被占用(比如 插入蓝牙耳机),如何打印trace呢?
Answer:可以写一个公用的trace函数,打到T卡文件(TXT等)。
Sourceinsight等工具的使用快捷键等,熟知快捷键,不但会给别人很犀利的感觉而且会使自己的效率提升;
例:
VC:ALT+F9,再点下data,输入一个全局变量,当此变量发生变化时,模拟器会停在发生变化的位置;
FlashTool:工具里的ReadBack 选项卡可以读出手机里的BIN,可以用来和自己的版本对比,定位问题;(事例:一个项目怎么找都没有找到问题,最后把手机里的BIN读出来和现有的做对比,发现是一个位错了,最后知道原因是生产线上的一台电脑中了病毒。有的时候 不一定是软件的问题。)
头文件的修改要慎重
否则需要NEW,会浪费很多修改BUG的时间;
确定宏的开启状态
不必去查找mmi_feature.h或者info.log等处此宏是否开启,如果此宏被另外一个宏包裹着,这样找下去岂不是很麻烦?在宏所包含的内容里加一些乱码,remake下该模块,报错说明此宏为开启,然后在 Sourceinsight右击此宏选择“Edit Condition”,设置为“Set True”,此后Sourceinsight文件里的此宏else分支就会变灰,可以提高阅读代码的速度;否则,此宏则未开启。
可疑代码
在看代码的过程中,可以代码处可以根据需要使用“#if 1”或者“#if 0”,先暂时让它编过或者屏蔽,不必理会宏的状态。
Assert
NEW or REMAKE
这里要选择好,否则会浪费不必要的时间,导致解BUG效率下降。
内存越界
Memcpy、strcpy、strncpy
建议写代码时尽可能的使用strncpy,size参数最好为dest的大小。
10、内存泄露
Malloc||free、new||delete之类的地方需要小心了,这两对儿很可能导致内存问题的出现。
可以在malloc或者new的地方添加个全局变量,malloc和new就加1,free和delete就减1,最后打出此变量的值,应该是0;
或者在malloc或者new地方 打trace,
kal_prompt_trace(MOD_CC,”……….”,__FILE__,__func__, __LINE__)
__FILE__:将会打出在当前文件的名字和绝对路径;
__func__:当前kal_prompt_trace所在的函数;
__LINE__ :当前kal_prompt_trace所在的行数;
11、栈溢出 消息队列(爆满) 和 堆栈(溢出)
注:尽量不要用for等循环发送消息给L4层,否则会导致消息队列“撑死”或者来了优先级更高的消息(比如关机)而使你发送的消息没有全部执行,尽量使用一问一答的方式;
12、MTK的相关命令
1)最好使用bat文件,把make XXX gprs r %*(%*代表后面的字符串,如果没有则为空)等写到bat里,这样可以提高效率。
2)make XXX gprs viewlog XXX(如 mmi_app)此命令自己可以试试。 make XXX gprs
您可能关注的文档
最近下载
- americanculture小学英语美国文化专题.pptx VIP
- 中国珠宝首饰传统文化 夏商周 中国古代夏商周(商)首饰种类2.pptx VIP
- 大学生科技创新课程之中美青年创客大赛(西南交通大学)中国大学MOOC 慕课 章节测验 期末考试答案.docx VIP
- 中国珠宝首饰传统文化 夏商周 中国古代夏商周(夏)首饰种类1.pptx VIP
- 【课程思政案例】《机械设计基础》.docx VIP
- 2025中级注册安全工程师《安全生产技术基础》考前密训10页纸.docx VIP
- 科研伦理与学术规范期末考试答案.docx VIP
- 检验科重点专科汇报.pptx VIP
- 重大社2024《财务实训教程—智能财务共享》教学课件-费用共享.pptx VIP
- AmericanCulture.ppt VIP
文档评论(0)