zl程序教程

您现在的位置是:首页 >  其他

当前栏目

MTK断点调试的几种方法

2023-02-19 12:21:09 时间

当我们在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  也是非常有用的地方