当我们在VS 平台下调试模拟器的时候,苦于找不到设置断点的地方,所以快度找到常用断点的地方很重要.
1.在模拟器中使用断点
模拟器中断跟踪断点设置函数: // 触屏相关 wgui_touch_screen.c wgui_general_pen_down_hdlr // 触摸屏按下函数 wgui_general_pen_move_hdlr // 触摸屏移动函数 wgui_general_pen_down_hdlr // 触摸屏松开函数 wgui_general_pen_repeat_hdlr // 重复 wgui_general_pen_abort_hdlr // 放弃操作
在wingui.c 此函数中setup_UI_wrappers有相关全局变量的初始赋值和定义 EntryNewScreen // 进入一个新的screen都会调用的函数 ExecuteCurrKeyHandler // 执行按键的函数 ExecuteCurrHiliteHandler ExecuteCurrHiliteHandler_Ext // 执行当前高亮的函数 ExecuteCurrProtocolHandler //执行当前协议栈的函数 execute_softkey_function //执行softkey的函数 UI_fill_rectangle // 填充一个矩形框 UI_draw_vertical_line // 画一条垂直线 UI_draw_horizontal_line // 画一条水平线 UI_draw_dotted_horizontal_line //水平虚线 UI_draw_dotted_vertical_line // 垂直虚线 UI_print_text // 画一个字符串 UI_print_bordered_text // 画一个有边色字符串 UI_print_text_n // 画一个有n个字符的字符串 UI_print_bordered_text_n // 画一个有n个字符的带边框色字符串 UI_print_bordered_character //画一个的带边框色字符 UI_print_character //画一个字符 gdi_image_draw //从绘图事件开始跟踪的函数 _show_image // 画一个gif _show_transparent_image //画有设透明色的图片 _show_animation_frame // 画设置祯数的图片 gdi_layer_blt_previous // 同一个layer刷新某一区域的函数 gdi_layer_blt_ext // 几个layer叠加显示时刷新某一区域的函数 UI_BLT_double_buffer //刷新一块区域 UI_set_font //设置字体 3。在模拟器中设置变量值改变的断点 4。搜索菜单ID 如MAIN_MENU_ENTERTAINMENT_MENU_ID 5。搜索字符串ID如MAIN_MENU_MENU_TEXT 6。搜索图片ID 如MAIN_MENU_PHONEBOOK_ICON 7. 超级终端调试: 8.Catcher调试
2.MMI绘制设置断点
跟踪屏幕每一处字串绘制: 设置断点UI_move_text_cursor: gui_move_text_cursor =UI_move_text_cursor
图标测量: 设置断点_measure_image gui_measure_image = _measure_image
图标显示:
设置断点_show_image gui_show_image = _show_image
水平线和垂直线的绘制:
设置断点UI_draw_vertical_line和UI_draw_horizontal_line
gui_draw_vertical_line = UI_draw_vertical_line; gui_draw_horizontal_line = UI_draw_horizontal_line;
字串测量、坐标位置、打印:
设置断点UI_print_text、UI_measure_string 、 UI_move_text_cursor gui_measure_string = UI_measure_string gui_move_text_cursor =UI_move_text_cursor gui_print_text =UI_print_text
另外 EntryNewScreen() dm_redraw_category_screen 也是非常有用的地方