如何看MTKgcc 调试信息息

MTK平台驱动调试指南
我的图书馆
MTK平台驱动调试指南
按Esc退出全屏模式2 贡献值29K 大小&
发表评论:
喜欢该文的人也喜欢当前位置: >>
mtk平台软件调试方法与技巧
mtk 模拟器调试 前篇文章介绍了手机调试的 TRACE 技巧,MTK 手机调试是比较简单的,除了打 TRACE,找 ASSERT, 分析 DUMP 外,剩下的就是经验了,有经验的人看到现象就能猜到问题出在什么地方,简单看一 下 TRACE 只是为了确认自己的猜测.初涉此道的朋友往往需要时间,慢慢积累经验.要达到熟 练,就需要有空的时候多读多研究代码.熟练的掌握了代码,解决问题就会熟能生巧. MTK 的模拟器调试说没技巧也是对的,说有技巧也不错.因为模拟器的技术与其说是 MTK 经验, 不如说是 VC 经验. 由于模拟器能在没有样机的情况做大量的 UI 方面的开发,同时模拟器具有快捷,所见即所改 等优点,因此,受到很多开发老手的青睐.熟练掌握模拟器使用技巧,对于提高工作效率,节省 资源具有很积极的意义. 工欲善其事,必先利其器.欲了解模拟器调试,就要先了解 VC 使用.VC 调试过程中经常使用的 快捷键如下: vc++断点的使用:按 F9(设置断点) ,F5 调试,F10 单步调试,shift+F5 退出调试 F10 单语 句执行,F11 单指令执行,Ctrl+F10 执行至光标处;F9 按行设置/取消断点, Alt+F9 可按行, 按数据或按消息设置断点;调试时,按 Alt+3 打开跟踪窗口,Alt+4 打开变量窗口,Alt+5 打开寄存器窗口,Alt+6 打开内存窗口,Alt+7 打开堆栈窗口,Alt+8 打开汇编指令窗口; 1.只要你有源代码,拥有一个模拟器是一件很容易的事.当然,有些情况下,这对于初入 MTK 的 人来说,也是困难的,特别是在一些代码管理不善,公司人员众多,员工流动频繁的公司,你永 远想象不出他们的代码会有多糟.不过一般情况下,我到一个新公司,都会试着去使用他们的 代码编译得到模拟器,不管他们的代码多么糟,我总能快速的编出模拟器来.只要三个步骤: a.在编译模拟器前请关掉所有 SP 的宏,这是很重要的,很多 SP 都不提供在模拟器下运行的库, 所以一个项目 SP 越多,在模拟器下,他无法识别的函数也会越多 b.在编译过程中遇到错误,可以把所有与显示无关的代码全部使用#ifdef WIN32 宏括起来,把 所有不认识的类型使用重定义.把一些不能识别的宏定义使用 WIN32 括起 来重定义一下 c.在生成 MODIS 时,会遇到大量不认识的函数,如果少于 50 个,全部建成 void xxx(){}类型的 空函数.如果多于一百个,尝试查找这些函数的来源,如果是相关 SP 的,就再次补充关掉相关 SP.当然如果你不怕麻烦,也可以把这一百个函数建成空函数.一般来说,把所有第三方功能和 与 MTK 无关的功能关掉的话,不能识别的函数一般不会超过十个. 经过这样三步,一般情况下你都能得一个差不多可以使用的模拟器.有了模拟器,你就可以进 行下面的工作了.如果你仍然无法获得模拟器,建议咨询你的项目领导,如果你的领导也无法 解决,说明这个软件组是一个组员变动很快,或者说缺乏条理性的部门,当然也有可能这个部 门的程序员都是一些 MTK 的顶尖层高手,他们的程序从来不需要调试.总之这是会让人疯狂的 部门. 2.如果你顺利到到一个模拟器,那么就可以开始调试了.首先说一下断点,VC 中的断点分三大 类,一类是本地断点,一类是数据断点(也称之为条件断点,有人称之为高级断点),还是一类是 消息断点;这三类断点分别对应于快捷键&ALT+F9&打开的对话框中三个选项卡.由于消息断点 是用于跟踪 WIN 的消息,所以在 MTK 中用不着.在模拟器中一般我们只使用本地断点与数据断 点.本地断点和数据断点在 BUG 调试中举足轻重,熠熠生辉。熟练掌握断点技巧,可以使工作 事倍功半。可能有些人会使用断点,但却不知道断点在模拟器中有什么妙用.断点有两个最常 使用也的作用,一是跟踪代码执行情况,二是观察断点处局部变量值的变化.这两个功能应用 最多.但他在 MTK 模拟器中还有两个隐含的用途,一就是快速定位文件,MTK 本身的源代码大约 有差不多上万个文件,而加入 SP 后,代码大约已经超过了万数.在这里面查找文章,查找函数, 是一件很困难的事,这时就需要使用断点了.你在代码阅读工具 SI 中可以很轻松的利用 &CTRL+O&打开文件,也可以使用&F7&快速定位到函数,但在 VC 中却没这么方便,不过你可以使 用断点,比如想在 VC 中打开某个文件 wgui_categories_CM.c,只要 VC 中使用&ALT+F9&,在 break at 编 辑 框 里 输 入 {,E:\JMT_1120\plutommi\mmi\GUI\GUI_SRC\wgui_categories_CM.c,} .4693,按 F5 执行 DEBUG 后 VC 就能自己定位到这个文件 wgui_categories_CM.c 的 4693 行。这是文件断点,也 可 以 打 函 数 断 点 , 比 如 文 件 wgui_categories_CM.c 的 4693 行 对 应 的 是 函 数 ShowCategory16Screen,也可以直接在 break at 编辑框里输入 ShowCategory16Screen,使 用 F5 键 DEBUG 时, 函数运行到拨号界面时, 就会停下来供你调试。 本地断点就是这样使用的。 那么本地断点有什么用呢?或者说有什么特殊用途呢?简单举几个例子吧,但断点可以应用 于解决十分多的问题中,不要因为我的例子束缚了你的想象力. a.如何使用断点快速定位到问题点呢?如果我们发现,拨号窗口显示出了问题,但我们对代 码不熟,不知道拨号窗口的代码在哪个文件,哪一行,我们就可以在 EntryNewScreen 函数上 打断点,当进入拨号时他就会停下来,这时我们能过堆栈窗口信息就可以很轻松的找到这个 窗口的实现函数。详细研究代码,就可以找到解决方法. b.断点可以用于快速解决窗口显示问题,比如我们的拨号窗口,有一个图片显示不正常,这时 我们可以在绘图函数 gdi_image_codec_draw 上打上断点,进入拨号窗口中,每一次显示图片, 都会在该函数上停下来,结合堆栈,我们可以很容易找到是哪个地方代码出来问题,从而找到 解决方法.有关此类的函数太多,不一一举例. C.断点可以用来研究全局变量被意外修改问题,我们打开断点对话框,选第二个选项卡,把需 要跟踪的变量打进去,当每次变量变化时,VC 都会停下来等我们调试.也可以设置条件,假设 某全局变量 U8 g_XXX, 其值等于 5 时会出错,但你不知道这个全局变量在什么地方被什么代 码赋值为 5,这时就可以设置数据断点,在第二选项卡上面的对话框里输入 g_XXX == 5,当其值 为 5 时就会停下来. d.研究代码也可以使用断点,比如 MTK 代码里使用有很多函数指针封装,例如 gui_print_text 指针,你想研究他的实现过程,但由于是指针,你找不到他的函数体,这时你就可以在数据断点 中,把指针 gui_print_text 输入进去,重启模拟器时,他就会定位到 ui_print_text 函数处. 兹举这四个例子吧,断点可以使用于你需要调试的任何场合,但过多的断点会影响你查找问题 的速度,等熟练使用时,就可以有针对性的对某些变量和函数打断点以解决问题.这是一个积 累的过程 3.堆栈调试,Alt+7 打开堆栈窗口.该窗口中我们可以看到函数之间的调用关系,这是十分有 用的,一般都是结合断点使用,定位 BUG 和研究代码十分有用.由于上面有例子,这里就不举了 4.变量窗口,Alt+4 打开变量窗口,该窗口会自动显示断点代码处使用的变量及其值,阅读代 码解决 BUG 时使用,单步执行时经常参考该窗口数据 5.WATCH 窗口,按 Alt+3 打开,由于变量窗口自动显示的变量有时不是我们需要的,这时就可以 把我们需要查看的变量拖放到该窗口研究,结合断点使用,并且这里也支持表达式取值,真是 太棒了. 6.内存窗口,Alt+6 打开内存窗口,内存窗口可以显示一块内存的内容,这是很有用的,比如我 们要跟踪短信内容,有一个短信内容的指针,把该指针输入 WATCH 窗口,只能看到该指针指向 的第一个值,要看其他的,会很麻烦,你只能输入表达式,但你把该指针输入内存窗口,就不必 这样费事了 7.Alt+8 打开汇编指令窗口,这个窗口用处不是很大,学习汇编的话,还是有用处的.一般情况 下,如果第三方的库文件出了问题,也就只能使用这个窗口调试了.普通情况下,如果错误定位 在 C 标准库文件的汇编代码上,只有一种可能,就是你的调用出错了.调试占了研发的很大一部分时间,调试的基本技术就这样,一般情况下是综合运用,灵活掌握, 以期快速解决问题,稳定代码.剩下就是经验积累的问题了.注: MTK Modis 使用简介 Modis PC 仿真, 要进行如下操作:(假设工程路径为 D:\X) 第一步:在如下目录中 D:\X 执行 make Prj_Name GPRS gen_modis 第二步: 转到 modis 目录 D:\X\modis 执行 createmodis.pl ..\make\Prj_Name_GPRS.mak 第三步:再切换到 D:\X 执行 make Prj_Name GPRS codegen_modis 第四步:最后转到 modis 目录, 执行 modiscodegen.pl ..\make\Prj_Name_GPRS.mak 第五步:开始使用 Modis 仿真--运行 D:\X\modis\Modis.dsw,编译工程; 第六步:启动 Modis-&开机-&Option-&Luanch Catcher&NS,这样就可以进行模拟操作并从 catcher 中得到日志; 注意:老版本的 Catcher 下出现 NS 不能控制的情况。 make WMD6225_GEMINI GPRS gen_modis cd modis createmodis.pl ..\make\WMD6225_GEMINI_GPRS.mak cd .. make WMD6225_GEMINI GPRS codegen_modis cd modis modiscodegen.pl ..\make\WMD6225_GEMINI_GPRS.mak MTK 调试入门之一 曾有朋友让我写一些调试技巧方面的文章.调试对于软件是十分重要的,但却不是一篇二篇文 章能讲清楚的.有很多调试技巧都是零零碎碎的东西,用的时候能很容易使用,但要写出来时, 却还是比较麻烦的. MTK 的调试一般来说可以分为仿真调试与手机调试.这两种调试对于研发新功能,修改 BUG,研 究算法都是十分重要的.当然,这两种调试也有差异,有时会出现在模拟器运行正常,在手机却 运行失败,或者相反,这就突出了软件模拟环境与硬件手机环境的差别.原因可能是各种各样 的,比如可能是有些硬件软件没有办法模拟,有些新功能对硬件依赖强,不能模拟,新软件的有 些函数只能在手机上运行,没有写相应的模拟器代码.等等原因都会导致两者差异.这里不一 一赘述,大家知道模拟器和手机有差异就行了. 模拟器调试具有直观,快速,追踪方便能优点,受到很多 MMI 开发者的喜欢.而有关模拟器的调 试,其他也就是 VC 调试功能的使用.由于国内软件教育重编程,算法,轻调试,所以很少有系统 的调试方书的书.在开发过程中,我也见过许多人压根就不使用模拟器,他们认为模拟器也就 是在没有手机的时候使用.详细讲解模拟器的调试就放到以后,因为模拟器断点,内存,堆栈, 变量各个方面的调试,详细写来都可以成一篇文章.这里先讲一个手机调试的 TRACE 使用.以 前曾写过一篇 DUMP 调试的文章.通过出错的 DUMP 信息查找错误.有兴趣的朋友可以参考. Detail_RD.Blog_blogercn_19169.html 1.在 MTK 平台,我们最常使用的 TRACE 函数是 kal_prompt_trace 函数,这个函数是系统提供给 我们的用于在 catcher 里调试错误的.在这个函数不能使用的场合,有时我们会使用函数 system_print 或者 dbg_printf,这两个函数可以不使用 catcher 的情况,使用 WIN 自带的工具 超级终端来调试程序.有时驱动的朋友会自己用函数 PutUARTBytes 写自已 TRACE 函数,这些函 数可以使用超级终端调试,如下,就是别人写的一个 TRACE 函数.打印某一块数据的内容,常常 TRACE 内存数据,指定地址,指定大小 void perun_dump(void *buf, prn_int16 size) { #ifdef PRN_TRACE_OPEN #ifdef MMI_ON_HARDWARE_P char str[2048]; char *ptr = (char*) char *ptr1 = int i = 0; memset(str, 0, sizeof(str)); strcpy(ptr, &[Perun_dump]: &); ptr += strlen(&[Perun_dump]: &); while (i & size) { sprintf(ptr, & %02x&, *ptr1); ptr += 3; ++ptr1; ++i; } sprintf(ptr, &\r\n&); PutUARTBytes(0, (kal_uint8 *)str, (kal_uint16)strlen(str)); #endif #endif } 也可以写一个像 MTK 自带的一样的函数来 TRACE,如下,该函数也是可以运行在终端中: Void perun_trace(char *fmt, ...) { #ifdef PRN_TRACE_OPEN #ifdef MMI_ON_HARDWARE_P va_ char buf[2048]; char *ptr = (char*) memset(buf, 0, sizeof(buf)); strcpy(ptr, &[Perun_trace]: &); ptr += strlen(&[Perun_trace]: &); va_start(list, fmt); vsprintf(ptr, fmt, list); va_end(list); strcat(buf, &\r\n&); buf[2047] = 0; PutUARTBytes(0, (kal_uint8 *)buf, strlen(buf)); #endif #endif } 2.TRACE 语句的编写是十分重要的.如何写出的 TRACE 既能在仿真下使用,也能在手机中使用, 我一般会使用如下的格式: #ifdef WIN32 #define MYTRACE printf #else #define MYTRACE(...) kal_prompt_trace(MOD_WAP, __VA_ARGS__) #endif 经过如下的封装,MYTRACE 就可以既能在手机上运行,也能在电脑中运行, 并且我已经消除了 MTK 自带的函数与 printf 在调用上的不同.顺便说一下,模拟器调用函数 MYTRACE 时,会在控 制制输出该函数的打印信息.手机调用 MYTRACE 时,会在 filiter 为 MOD_WAP 时输出信息. 3.有时为了便于观察,我会为我的 TRACE 语句添加一个前缀,比如我自己的 TRACE 前面添加十 个&或者我自己的拼音名字,我会如下修改我的 MYTRACE: #ifdef WIN32 #define MYTRACE printf #else #define STR(s) #s #define MYTRACE(...) kal_prompt_trace(MOD_WAP, STR(&&&&&&&&&&)##__VA_ARGS__) #endif 经过这样的改进,我的 TRACE 在输出信息时,信息头就是我的名字,我可以使用查找全部功能 把我需要的 TRACE 全抓出来.如果你对#号的使用,有疑问,请自己查找相关资料 4.种种迹象和从理论上看来,TRACE 和 MMI_ASSERT 是调试的好帮手,但在发布软件时,带上了 这个会引来不必要的麻烦.MMI_ASSERT 增加了系统重启的频率.TRACE 增加了系统的 ROM,RAM 和 CPU 的开销.在工作中,我们曾经发现一款手机,由于 ROM 过于紧张,添加几条 TRACE 就会出 现编译错误,去掉 TRACE 就编译通过了,导致出了 BUG 调试十分的麻烦.如何写一种使用时可以 TRACE 错误,不使用时又不占用系统资源的 TRACE 呢,我见许多人这样处理,因为 NULL 会被编 译器优化点,后面括号变成一个表达式了.表达式对系统的开销自然小于函数了.MTK 通过 TRACE 的栈信息寻找 BUG 原因与解决方法( 20:00:21) 前几天去一个公司帮他们解决 BUG。BUG 的描述是这样的,在使用在线 QQ 时,如果来电话, 就会重启。 没有发现 ASSERT 信息,只有 stack dump 信息。起初听他们描述,感觉像是 QQ 或者通话的问 题。 抓了 TRACE 之后,发现是 MED 模块的问题,由于 MED 主要是一些媒体文件的解码。 由于观察现象时发现,通话时,还没有来得及响铃,就开始重启,因此可以大概推知是来电 振铃出了问题, 具体出在什么地方,需要查找 TRACE 信息。从别人那里获取的 TRACE 信息如下: Trace 706 MOD_NIL TRACE_ERROR [1] fatal error (4): Data_abort - MED Trace 706 MOD_NIL TRACE_ERROR Exception type: data abort Trace 706 MOD_NIL TRACE_ERROR software version: E500_A.1.4 Trace 706 MOD_NIL TRACE_ERROR boot mode: normal mode Trace 706 MOD_NIL TRACE_ERROR rtc sec = 16, rtc min = 33, rtc hour = 1 Trace 706 MOD_NIL TRACE_ERROR rtc day = 1, rtc mon = 1, rtc wday = 1, rtc year = 9 Trace 706 MOD_NIL TRACE_ERROR execution unit: MEDMED Trace 706 MOD_NIL TRACE_ERROR status: 0x Trace 706 MOD_NIL TRACE_ERROR stack pointer: 0x Trace 706 MOD_NIL TRACE_ERROR stack dump: Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR 0xA0001BED Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR 0x08480FD5 Trace 706 MOD_NIL TRACE_ERROR 0x0847CE59 Trace 706 MOD_NIL TRACE_ERROR 0x084DE0EF Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR 0x Trace 706 MOD_NIL TRACE_ERROR number of messages in the external queue: 0 Trace Trace Trace Trace Trace Trace Trace Trace Trace
706 706 706 706 150706MOD_NIL MOD_NIL MOD_NIL MOD_NIL MOD_NIL MOD_NIL MOD_NIL MOD_NIL MOD_NILTRACE_ERROR messages in the external queue: TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE TRACE_ERROR MSG_ID_INVALID_TYPE观察 TRACE,结合 BUG 描述,可以大致推知是 MED 的振铃问题,具体位置需要看 catcher 打 印的栈信息。 有些人遇到这个信息,就蒙了,感觉无从下手,我最早学习 MTK 时,也是无从下手,总觉得 这样的信息没有 ASSERT 直观 ,一看就知道哪个文件哪一行出错。但 ASSERT 并不总是金牌,有一次遇到一个 MEMCPY 的 ASSERT,调用的地方太多, 照样需要查栈信息来寻找问题。当然写的代码,尽量在一些关键的地方加上 ASSET,这会让 人查找问题更轻松一些。 当然有了这个信息, 我们也可以大概推测出 BUG 的地方和原因的。 要查找这个 error 的信息, 必须要找到该软件版本对应 的 sym 文件。该 sym 和 BIN 文件同步生成,都位于 BUILD 文件下。该文件储存了 ARM 编绎器 为软件中所有函数生成的地址。 而出错时,MTK 会保存当时栈中最近执行的 10 条指令的地址,我们通过对这些地址的研究, 就可以找到出错的地方。 由于 sym 文件只保存了函数的地址,函数体里执行的代码地址没有列出,而一般打出的错误 地址不会正好对应某个函数的 地址,一般会会偏移 N 个单位。当然也有例外,我曾遇到一次出错,有一个地址正好和某函 数地址对应。对于出错信息 的地址与函数地址不对应的情况,我推测应该是函数体里的指令出错,所以应查找比该出错 指令小且最近的函数。 比如上例行“Trace 706 MOD_NIL TRACE_ERROR 0x” ,我们在 sym 文件中不应该查找 0x 对应的指令,因为一般会一个也找不到,我们要查找 x085569C 或者 x085569 对就的函数,这 时大约可以查到许多函数, 找到与该出错地址最近且比该地址小的地址对应的函数,十个地址大约可以找到十个左右的 函数,通过仔细排查, 确认以下函数: med_int_left_size med_int_sfreeaud_main aud_tts_play_req_hdlr med_int_smalloc med_set_ext_memory_pool TCC_Task_Shell 如此可以大致确定问题出处和原因了,请教项目负责人,知道 aud_tts_play_req_hdlr 是语音王的播放函数,在呼入时,有来电报号,该功能和 QQ 都是从 MED 栈上动态分配内存, 由于 QQ 占用了一部内存,有呼入电话时,语音王分配内存失败,导到语音解码故障。问题一 下解决。 ================================================================================ ===== 呵呵,通过 map 信息,来查找导致问题的函数入口,是最常用的调试手段之一。其实, 也完全可以通过现象分析来查找问题点。比如,这种完全能复现的问题,很容易找到固定路 径的。 如来电提示改为震动,或者无声,会怎样,关闭来电报号,会怎样。一下问题点就出来了。 共享内存导致的这个问题, 其实是设计时候的欠考虑,没有考虑到各种可能常见的边界。 Assert 用得太多也未必好, 作为一种调试手段, 如果都出厂了,还到处 Assert 或重启来处理一些问题,显得太那个了吧,太不健壮了。MTK 串口调试设置 MTK 产品发布时 AT 和 Debug 复用仅有的一个串口。 一般 AT 指令和下载代码一般用串口1(APP uses uart_port1), debug 调试一般用串口2(TST uses uart_port2) 。 代码中有可能把串口 2 和串口 3 设置为普通 IO 口来用,因此,在程序调试阶段,如果要想把 AT 调试和 Debug 调试同时打开,则需要从新设置 uart_port2 的 GPIO 设置。 设置方法:进入 custom\drv\Drv_Tool,用 DrvGen.exe 打开 custom\drv\misc_drv\&项目名 &\codegen.dws,对 uart 端口对应的 GPIO 进行相应设置即可。 如果只是想掉换 TST 和 AT 调试信息的串口,只需设置: ./custom/common/PLUTO_MMI/nvram_common_config.c NVRAM_EF_PORT_SETTING_DEFAULT[] 0x00, 0x00, /* TST uses uart_port2(value is 1) */ 0x01, 0x00, /* APP uses uart_port1 */ 0x00,0x00 表示串口 1,0x01,0x00 表示串口 2 根据自己需要设置即可。中 //longfeey modify 0x01, 0x00, //longfeey modify 0x00, 0x00,
调试 LCD 调试步骤: 1 确定 LCD 的连接方式; 1 ...2 调试一个灯控制程序,hal 层不能调用底层的 dev...MTK平台驱动调试介绍 40页 1下载券
mtk驱动调试举例...如何在 MTK 平台进行驱动调试 收藏 如何在 MTK 平台进行驱动调试 --&--& -...MTK平台驱动调试笔记 暂无评价 8页 免费 mtk平台软件调试方法与技... 7页 免费...以下音频调试方法适用于结构密封良好状况下。 一般: 首先连接手机,进入 META ...详细分析MTK校准调试的原...
MTK平台终端校准软件操作...
12...mtk平台LCD驱动调试_计算机软件及应用_IT/计算机_专业资料。MTK智能平台LCD驱动...之间传递 command 的方式,有 SERIAL_DBI、PARALLEL_DBI、 GPIO 几种控制方式。...VC调试技巧之断点 4页 免费
VC调试器高级应用---高... 19页 免费
mtk平台软件调试方法与技... 8页 免费
vc中常见断点的解决方法 4页 免费
mtk平台...MTK 的音频调试方法_信息与通信_工程科技_专业资料。介绍了MTK平台手机的音频参数...最后将此文件交给相关软件人员。 综上所述,音频调试不可能调得面面俱到,MIC ...射频调试方法 射频调试包括发送和接收两个大的方面,其中发送又包括了发送功率、...mtk平台软件调试方法与技...
9页 5下载券
MTK射频布板指南 3页 1下载券...CCT6589 各模块调试方法及注意事项 1、导入 Device Profile 文件: CCT page→...DQCS07-柴油发电机组调试... 暂无评价 26页 免费
MTK平台软件开发调试工具....平台| MTK平台兼容多个G_SENSOR的调试_计算机软件及应用_IT/计算机_专业资料。MTK 平台兼容多个 G_SENSOR 的调试 1. 修改 mediatek/config/project_name/project...MTK 的模拟器调试说没技巧也是对的,说有技巧也不错.因为模拟器的技术与其说是...mtk平台软件调试方法与技... 7页 免费 MTK平台驱动调试指南 暂无评价 3页 免费...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。豆丁微信公众号
君,已阅读到文档的结尾了呢~~
详细分析MTK校准调试的原理及方法,mtk 音频调试,气体校准仪 原理,ph计校准原理,时间校准,北京时间在线校准,调试原理,北京时间校准,北京时间校准器,电池校准,电脑时间校准
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
详细分析MTK校准调试的原理及方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口网站已改版,请使用新地址访问:
MTK-Catcher-use-book MTK手机开发的时候如何查看软件的LOG 信息,我们就不得不带来说一说 了 MTK 238万源代码下载- www.pudn.com
&文件名称: MTK-Catcher-use-book
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 407 KB
&&上传时间:
&&下载次数: 4
&&提 供 者:
&详细说明:MTK手机开发的时候如何查看软件的LOG调试信息,我们就不得不带来说一说CATCHER人家了,这个软件的使用对于新手来说 还是必须要先看看了。希望可以给大家有所帮助。LOG调试信息可以分别选择需要查看的模块来显示。-MTK mobile phone development time LOG debugging information to see how the software, we have to bring people talk CATCHER the use of this software for the novice or must first look at the. I hope everyone can help. LOG debugging information can be selected to display the module you want to view.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&MTK_catcher使用说明中英文版.doc
&近期下载过的用户:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - MTK手机开发完成后,需要对RF射频部分进行比较详细的调整,才可以确保MTK手机的无线发射信号的稳定。
&[] - 新手开发MTK手机软件的时候都苦于没有相当的参考资料,这个il主要是关于MTK手机配套的编译手册。MTK_MakeBuild_Design_Customer豆丁微信公众号
君,已阅读到文档的结尾了呢~~
史上最全的MTK驱动调试MtK8,mtk8,MTK8,MTK,Mtk8
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
史上最全的MTK驱动调试
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 写入调试信息 的文章

 

随机推荐