MTK 调试培训.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

ah82299 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档