更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz调试是开发Apps必备的技能,后总之,任何更复杂的应用程序都不可能一次成功编码。如果app的预期和你自己的预期不一样,或者因为某种原因异常中断,你需要检查中断的原因,需要调试程序。调试程序的方法有很多种。比较常用的方法是设置断点和输出日志。本文将详细介绍这两种调试App的方法。1.设置断点如果你认为需要跟踪的代码或bug在某行代码附近,可以点击该行代码前面的部分,为该行设置断点,并有一个红点前面会出现这行代码,如图1所示。图1设置断点,点击上方工具栏中图2所示的调试运行按钮。图2调试运行按钮如果没有遇到断点,点击该按钮即可正常运行程序。一旦遇到断点,程序就会停在断点处。知道按F7或F8键继续逐行执行程序,从而监视程序中相关变量的状态。F7表示StepInto,F8表示StepOver。其中,StepInto表示会跟踪到方法内部。比如当前正在执行一个方法,按F7键会继续跟踪到方法内部,然后一行一行的继续执行代码。StepOver会将方法作为一行代码执行,不会跟踪方法内部。所以如果你觉得某个方法肯定没有问题,就按F8,如果你觉得这个方法可能有问题,就按F7。调试过程的效果如图3所示,我们可以看到相关变量的当前值显示在下方的Variables视图中。图3调试代码2.输出日志调试代码的另一种方式是输出日志,可以直接使用System.out.println(...)将信息输出到LogCat视图,例如执行下面的代码,就会在LogCat视图中查看图4中显示的信息。System.out.println("你好世界");图4LogCat视图下的调试信息输出HarmonyOS还提供了另一种输出日志的方式,即HiLog类,它提供了多个静态方法用于输出不同级别的日志信息。这些静态方法如表1所示。表1.HiLog类中用于输出日志信息的方法。这五个方法的参数是完全一样的。例如error方法的原型如下:publicstaticintererror(HiLogLabellabel,Stringformat,Object...args);其中label参数表示输出日志信息的相关性,type为HiLogLabel对象,format表示要输出的日志文本(可以包含格式化占位符),args参数表示格式化后的参数值,为可选参数。使用输出日志方式的情况如下:HiLogLabellabel=newHiLogLabel(HiLog.LOG_APP,223,"MY_TAG");HiLog.error(label,"这是一行错误信息,原因:%{private}s","Urlisnotaccessible");HiLog.warn(label,"这是警告,原因是:%{public}s","变量的值可能为负数");HiLogLabel构造方法第一个参数表示日志类型,目前只有HiLog.LOG_APP,未来会开放更多的日志类型。第二个参数是domain,是一个整数类型,第三个参数是日志的标签。Domain和log标签都会以某种形式显示在日志信息上。输出日志信息时,runformat日志信息,即为日志信息指定一个占位符。占位符需要在%和符号(如s、d)之间添加{private}或{public}。如果加上{private},输出的信息会被隐藏,也就是说占位符对应的信息会被隐藏。如果加上{public},则输出原来的占位符信息。域在输出时被转换成十六进制数放在标签的前面,以斜线(/)分隔。执行这段代码后,会在HiLog视图中输出如图5所示的日志信息。图5在HiLog视图中输出日志信息使用error方法会输出深红色的日志信息,日志内容与其他方法输出的相同。但是需要注意的是,使用HiLog的相关方法输出的日志分为五个级别,分别是DEBUG(调试)、INFO(信息)、WARN(警告)、ERROR(错误)、FATAL(致命错误)。这5个级别用5个整数表示,这些整数定义在HiLog类中,代码如下:publicfinalclassHiLog{publicstaticfinalintDEBUG=3;publicstaticfinalintINFO=4;publicstaticfinalintWARN=5;publicstaticfinalintERROR=6;publicstaticfinalintFATAL=7;……}如果您希望在HiLog视图中过滤这些级别的信息。只会显示不大于当前级别的信息。例如过滤WARN信息,只显示DEBUG、INFO、WARN这三种信息。由于ERROR和FATAL的值都大于WARN,所以不会显示这两类信息。了解更多请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz
