React-Native 调试技巧

  • 开发过程中,掌握调试技巧是每一个开发者的必修课。熟练的掌握调试技巧不仅可以加快开发速度,而且还可以达到事半功倍的效果。
再次在iOS平台运行RN项目
  • 如果开发者已经在设备上运行过RN项目,当再次开启电脑时不需要再次使用Xcode来编译项目。只需打开终端并cd到React-Native项目的根目录下,执行命令:react-native start。带待改命令执行完毕后,在设备上启动已经安装过的RN应用。RN应用能与开发者电脑上的调试服务器相连,启动成功。
  • 因为使用Xcode在iPhone真机上调试项目的启动时间比较久(从用户按下运行按钮到项目开始在手机上运行)。这也正是RN项目相对于原生项目的一大优点。只需要编译一次,以后修改RN代码后,不需要再编译项目,直接在手机上运行原来编译安装的项目,然后可以马上加载新代码。通过这种方式,可以大幅度减少等待时间,提高开发调试效率。
  • 如果涉及了原生代码的修改与添加,还是需要使用Xcode来编译运行项目;如果你的苹果被分配了与上次运行时不同的IP地址(这通常发生在电脑重启后),那么还是需要使用Xcode来编译项目一次。
调试
  • 调试应用菜单
    • Android平台可以通过收的menu键或者摇晃手机来弹出调试菜单。iOS真机设备可以通过摇晃真机来弹出菜单。iOS模拟器则可以用快捷键command + D来弹出调试菜单。

    • 开发者在使用iOS模拟器是,有时会不小心按了command + T快捷键。这个快捷键会启动慢镜头动画调试功能——这是一个在调试动画时非常有用的功能。不调试动画时,慢镜头动画功能会让开发者调试等待时间很长,难以忍受。再次按一下command + T 快捷键,就可以关闭慢镜头动画调试功能了。

      IMG_0227.PNG

    • 如上图调出调试菜单,选择Debug JS Remotely 菜单项,Chrome浏览器会自动启动并打开一个React Native Debugger页面。如下图:

      C8A47BF3-8A26-4C4B-BBA5-DEE74B4D5508.png

    • 在苹果操作系统下使用快捷键command + option + J打开如下图界面:

      BB615B27-433E-4243-ACD0-390B48EE63A8.png

  • 断点调试
    • 如下图所示,先把RN的工程文件添加到工具中。
      2F775282-FBCC-45EC-B77E-4067FEC6F4AC.png
    • 添加了RN工程文件如图:
      FDA5A216-3234-4FA8-B686-6C59B281D204.png
    • 在需要调试的地方加断点。

      7569B8E0-6AC9-4CBE-9FED-DFF7F1DF3158.png
      * 注意此时已经执行到断点并且停止执行了,输出台打印了断点前一行的日志,断点及断点后的代码没有执行。此时开发者吧鼠标指向代码中的某个变量,就会显示当前这个变量的值。
      上图中右上方一排的六个按钮是断点调试中经常用到的工具。分别是(移到按钮上会显示按钮的作用):
      (1)Resume script execution(快捷键Ctrl + \),继续执代码;
      (2)Step over next function call(快捷键Ctrl + ‘),单步执行当前代码,执行时遇到子函数时不进入子函数内单步执行,而是将子函数执行完后在停止。在不存在子函数的情况下与“Step out current function call ”按钮效果一样。
      (3)Step into next function call(快捷键Ctrl + ;),单步执行当前代码,如果遇到子函数就进入子函数并继续单步执行。
      (4)Step out current function call(快捷键Ctrl + Shift + ;),单步执行到子函数内时,按此按钮可以执行完子函数剩下部分,返回到上层函数,等待下一个单步执行。
      (5)Deactivate breakpoint(快捷键Ctrl + F8),使当前断点失效。
      (6)Pause on exceptions,这个按钮时一个开关,当它有效时,按钮会变为蓝色,无效时为灰色。当它有效时,如果RN代码抛出了异常,调试工具会马上暂停代码的运行,进入单步调试模式,方便开发者调试。这个功能对调试非常有用。
      在 Pause on exceptions 按钮上方,有一个三个点的按钮,点击这个按钮,会出现弹出菜单,其中的 “show console drawer” 子菜单可以在这个页面底部打开控制台输出的小窗口。

  • 控制台
    • 在代码中,我们除了可以使用console.log函数在调试工具中记录日志外,还可以使用console.warn函数。这个函数的用法与 log 类似。与 log 相比,它有两处不同:
      (1)在调试工具的控制台中输出的姿势醒目的红色。
      (2)同时在手机屏幕上有黄色警告条。

    • 最后说很重要的一点:使用console.log记录日志对RN应用的性能有影响,将来开发者在调试RN应用时,如果发现莫名其妙的红屏,首先应该考虑的是自己的日志记录是否太多。在RN生命周期函数中使用console.log打印日志尤其容易引发问题。解决这个问题有两个办法:
      (1)使用高配置的手机进行调试,手机的CPU速度快,就不会出这个问题。
      (2)只打印必须的日志。同时,RN应用在发包时,不会自动关闭console.log。因此在应用正式发布前,需要把代码中所有的console.log语句删除或者注释掉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容