|
1. 在哪里设置断点,有没有通用的办法?
在7个月的工作里面,对于MODIS的认识又有进一步的认识。据我所知,一般在以下几个地方设置断点:
(1). mmi_frm_execute_curr_key_handler_int.这是keybrd.c中的一个函数,用于处理当前按键的事件,定义如下:
static void mmi_frm_execute_curr_key_handler_int
(S16 mmi_key_code, S16 mmi_key_type, U16 ucs2_value, U32 special_key_flag)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
FuncPtr currFuncPtr;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (mmi_frm_dispatch_key_event(mmi_key_code, mmi_key_type, ucs2_value, special_key_flag) == MMI_FALSE)
{
currFuncPtr = mmi_frm_get_curr_key_handler(mmi_key_code, mmi_key_type);
//MMI_TRACE(MMI_FW_TRC_G1_FRM, TRC_MMI_FRM_KEY_EXECUTE_KEY_HANDLER, mmi_key_code, mmi_key_type, currFuncPtr);
if (currFuncPtr)
{
#ifdef __MMI_SUPPORT_DUMP_SCREEN_STRING__
g_mmi_frm_cntx.dump_screen_info.allow_dump_screen_str = MMI_TRUE;
#endif
● (*currFuncPtr)();//通常在此处设置断点
}
}
}
(2). void SetKeyHandler(FuncPtr funcPtr,U16 keyCode,U16 keyType),这是一个注册函数,每按一个键都会去注册,所以这也是一个打断点的好地方。这个函数也在keybrd.c中。
(3).刷屏的函数,dm_redraw_category_screen()。这个函数在wgui_categories_inputs.c中,这个函数负责去刷屏,屏切换的时候大部分都会调用到这个函数,所以也是个打断点的好地方。
2.跟踪MODIS时需要注意的一些问题。
跟MODIS是跟流程,得注意代码走的具体流程。
触发按键的时候,会有UP和down两种,在modis上按一下按键,是执行down事件,再按一下是执行UP事件,但函数通常处理的UP事件,所以在跟踪时得注意,在按一下按键之后,按下F5,再按下按键,即执行UP事件。
3.跟踪状态栏的函数wgui_status_icon_register_hide_status_icon_bar,hide_status_icons_bar0 |
|