远程调试(Remote Debugging)

2023-11-09

        当运行的程序出现问题时,我们通常通过调试来追踪和定位问题。但是,当运行错误的机器上没有调试工具,我们就需要实现远程调试。简单地说,就是要调试的程序和调试器不在一台机器上。

        移动端web调试,alert虽然是个土方法,但也是万能的,不过这样会中断程序的执行,效率也比较低下。后来大家开始尝试使用模拟器调试,如chrome自带的设备模拟器,可以帮助我们测试网页在不同设备、不同分辨率的情况下的显示情况。其原理就是通过伪装User-Agent将浏览器模拟成相应设备,所以我们也不能太依赖模拟的结果,最终还是得使用真机调试。移动设备上没有调试工具?那你可以尝试一下远程调试,使用你的电脑来调试移动设备上的web页面。其实该类文章在网上也不少,有些介绍较为零散,有些由于软件升级等原因已不适用。本人经实践后,整理如下。

此处附送电梯:
1.iOS (web检查器)
2.Android (Android Chrome)
3.Weinre
4.Adobe Edge Inspect CC
5.MIHTool

  • iOS

Prepare: iOS6+, Mac, USB数据线
Setting:
1. 【iOS终端】设置→ Safari → 高级 → Web 检查器 → 开

2.【OS X】Safari → 偏好设置 → 高级 → 启用“开发菜单”

Running:
1. 使用iOS设备的Safari打开你想要调试的页面
2. 通过USB数据线连接iOS设备与Mac
3. 在Mac中启动Safari,从“开发”菜单下找到你的iOS设备
4. 子菜单项为移动设备上Safari的所有标签页,选择需要调试的页面。

        在这个调试器里,我们可以像使用桌面操作系统的 Safari 的调试器一样,做各种调试工作,譬如HTML 元素、CSS 及盒模型等的查看和即时编辑、JavaScript 调试器、网页元素时间轴、DOM 元素查看器等各种功能。

Tips:
1. 如果在开发菜单中没显示你所连接的iOS设备,或是没有显示你打开的页面,在Mac上重启Safari。
2. Windows 版本的 Safari 暂无此功能。

  • Andriod

Prepare:
1. 一个Android手机或平板电脑与Chrome For Android32或更高版本,或者从GooglePlay上直接安装
2. 一条USB数据线
    Windows用户还需要安装相应的USB驱动,下载地址:http://developer.android.com/tools/extras/oem-usb.html
3. 在您的开发机器安装了Chrome32或更高的版本
Running:
1. 在您的设备上启用USB调试
    在Android 4.0及4.1,它是在设置>开发人员选项
    在Android 4.2及更高版本中,开发人员选项默认是隐藏的,为了使其可用,进入设置>关于手机,点击版本号7次,返回到前一个页面,就可以找到开发人员选项。
2. 设置Discover USB Devices
    访问about:inspect,确保选中Discover USB Devices

3. 通过USB数据线连接你的设备和开发机器
    当你的设备连接你的开发机器时,你可能会在你的设备上看到一个弹框请求允许使用这台计算机通过usb调试设备。如果你不想每次调试都看到这弹框,选中一律允许使用这台计算机进行调试并点击确定。

        现在,你可以在该页面上看到所有你连接的设备和你打开的标签页。找到你需要调试的页面,点击inpect打开DevTools。你也可以重新加载这个页面,标签页置顶或者关闭它。更可以通过在输入框中键入网址新开一个页面。

4. 调试


        例如,查看所选中页面中的元素,在移动设备上的Chrome中这个元素对应的页面结构会立即高亮显示。
        同样,在DevTools的控制台中编写脚本或者执行命令,都会影响移动设备中检查的页面。也可以使用所有其他面板,例如Timeline和Profiles。

Tips:
1. DevTools现在对连接的设备支持 native USB debugging。不再需要通过配置ADB或ADB plugin查看移动设备上的Chrome和WebView连接实例。
2. 如果已启用USB调试,但about:inspect页面并没有显示你的设备
    检查设备上已有开发者选项可用并开启USB调试
    确保你正在使用Chrome for Android 32或更高版本
    检查Discover USB devices是否已被选中。如果有勾选,请拔出设备,并尝试撤消USB authorizations的开发人员选项,并重试。
    如果是Windows用户,检查是否已安装驱动。建议使用第三方软件,如应用宝、豌豆荚等手机助手。
3. 如果打开DevTools只出现一个空白的页面,你可能需要
    翻墙后再试试
    把开发机器和移动设备上的Chrome都更新到最新版本
4.调试Android webviews,需要Android4.4或更高版本,更多详情请看https://developer.chrome.com/devtools/docs/remote-debugging#debugging-webviews

  • Weinre

Weinre的全称是 Web Inspector Remote,功能与Firebug、Web Inspector类似,可用于远程调试运行在移动设备上的Web页面。

Weinre的通信过程是这样的:

Weinre 为了能够同步桌面的调试客户端和移动设备上的调试目标,需要你搭建一个调试服务器(Debug Server)。因此,在使用 Weinre 进行远程设备调试时,包含了上面的三种元素:
    调试服务器:调试服务器起到代理的作用,为调试目标和调试客户端建立通信;
    调试客户端:这是 Web Inspector 界面,即开发者在浏览器中进行调试的界面;
    调试目标:需要调试的页面,也指用于运行被调试 Web 内容的的浏览器所在的移动设备。

平台支持:
调试服务器支持的平台
    -任何支持node.js的平台
调试客户端支持的平台(运行调试界面的浏览器)
    -Google Chrome
    -Apple Safari
    -其它基于 WebKit 的浏览器
调试目标支持的平台(需要调试的页面)
    -Android 浏览器应用
    -iOS Mobile Safari 应用
    -PhoneGap/Cordova
    -其它
调试目标不支持的平台
    -iOS 3.1.3或更早
    -webOS 1.45或更早

Install:
1. 安装Node运行环境
2.通过Node包管理工具安装weinre
    npm –g install weinre
Running:
1. 启动weinre
    Weinre 提供了6个可选的启动参数,其中下面两个参数一般会修改,其它的用默认值就可以了。
    –httpPort 调试服务器运行的端口,默认的 8080,如果这个端口有在用,可以改为其它端口;
    –boundHost 调试服务器绑定的 IP 地址,也可以是域名,默认是 localhost,还可以设置为 -all-,表示绑定到所有当前机器可以访问的接口。
    如本人机器IP地址为192.168.2.1,则在控制台输入weinre –boundHost 192.168.2.1
2. 目标页面引入js
    <script src="http://tid.tenpay.com/”http://a.b.c.d:8080/target/target-script-min.js#anonymous “></script><br "="">    其中a.b.c.d为调试服务器IP地址
3. 在Chrome或Safari浏览器中打开http://a.b.c.d:8080/client/#anonymous
4. 使用你的移动设备访问目标页面
    远程面版中将会显示连接到调试服务器的页面,连接到调试服务器的客户端,还有调试服务器的属性。

        除远程面板以外,还有元素面板,资源面板,网络面板,时间线面板和控制台,这些相信用过Chrome或Safari开发者工具的你应该都不会感到陌生了,我就不在此介绍了。 
Tips:
1. 移动设备和电脑最好在同一网段,如果不在,需要保证能ping成功。
2. 网络面板不像chrme浏览器开发者工具那么强大,因为weinre是基于XMLHttpRequest进行监听的,所以只会显示通过XMLHttpRequest加载的网络数据,简单说就是通过ajax加载的页面或图片等。
3. 经本人亲测,Timeline面板一直没显示出任何数据,具体原因暂未知。
4. 暂不支持断点调试

  • Adobe Edge Inspect CC

Adobe公司推出的一个跨PC和各个移动平台的调试工具。
Prepare:
1. 将Edge Inspect下载到您的电脑

    在Creative Cloud中安装Edge Inspect CC,需要注册一个Adobe ID
2.安装扩展程序

3. 在移动设备上安装App(支持iOS,Android,Kindle Fire)

4. 安装Bonjour(Windows用户)
    Bonjour安装程序在你的Edge Inspect安装目录下。
    Win32: \Program Files\Adobe\Adobe Edge Inspect\BonjourPSSetup.exe
    Win64: \Program Files (x86)\Adobe\Adobe Edge Inspect\BonjourPSSetup.exe
Running:
1. 在电脑打开Edge Inspect程序,所有移动设备打开Edge Inspect App
2. 通过Bonjour连接设备与电脑,或者手动输入IP地址连接

3. 在Edge Inspect 扩展中输入每个移动设备的passcode

4. 在电脑Chrome浏览器内打开需要调试的网页,此时移动设备Edge Inspect App内将会同步显示电脑浏览器里的内容。

5. 点击“<>”开始调试

Tips:
1. 确保你的电脑和你的设备在同一无线网络内
2. 基于Apache开源的weinre,不支持断点调试。

  • MIHTool

MIHTool 是前端工程师在iOS设备上调试和优化页面的得力助手。
Prepare: iOS设备,MIHTool(在App Store里下载安装),开发机器上已安装Chrome或Safari浏览器
Running:
1. 打开MIHTool,在地址栏输入你要调试的网页地址即可。
    iPad版支持内嵌Web Inspector、模拟iPhone、编辑源码、查看当前页面的HAR、显示页面合成渲染层、显示元素的重绘渲染数等功能。
 
    iPhone版同样支持远程打开Web inspector调试等多项功能。


Tips:
1. 基于Apache开源的weinre,不支持断点调试。

延伸阅读


▶ Walkthrough007

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程调试(Remote Debugging) 的相关文章

  • JavaWeb远程调试

    目录 远程调试 Centos JDK 工程 启动配置 IDE连接 调试 停止调试 远程调试原理 原理 三种通信方式 Debug参数 第1种Socket Attach调试方法 第2种Socket Listen调试方法 第3种调试方法 断点分类
  • Quartusii 调试工具之In-System Memory Content Editor

    本文主要介绍Quartusii 调试工具中的In System Memory Content Editor 其主要功能就是能实时更改RAM ROM中的数值 同时也可以修改FPGA内部定义的常数值 它是通过JTAG调试接口去完成RAM ROM
  • 关于Android Studio2.3版本用小米4,小米5调试报Installation failed with message Failed to establish session. 解决办法

    最近刚把AS版本升级到2 3 突然发现以前可以用小米4 小米5调试的 升级后发现不能用了 一直提示Installation failed with message Failed to establish session 一直是以为我手机上有
  • linux下eclipse C++ 多线程调试

    初学linux编程 想要用linux下eclipse C 多线程调试 发现相关资料很少 所以想写一篇这样的文章 在这个页面看到 这里 If you use eclipse CDT you probably understand that e
  • VS2010调试-显示堆栈窗口

    以中断模式或运行模式显示 调用堆栈 窗口 在 调试 菜单中选择 窗口 然后单击 调用堆栈 或者 ALT 7 更改显示的可选信息 右击 调用堆栈 窗口 然后设置或清除 显示 lt 所需信息 gt 在 调用堆栈 窗口中显示非用户代码帧 右击 调
  • Linux下嵌入式程序仿真调试(GDB)(二)

    目录 目录 前言 Ubuntu下Qt的GDB环境搭建未成功 Qt5的设置 命令行调试问题记录 总结 链接地址 前言 Linux下嵌入式程序仿真调试 GDB 一 主要介绍了GDB交叉调试环境的搭建过程 本想把交叉编译好的gdb程序放置到Qt中
  • Hadoop学习笔记之在Eclipse中远程调试Hadoop

    转载地址 http itindex net detail 37273 hadoop E5 AD A6 E4 B9 A0 E7 AC 94 E8 AE B0 插件 话说Hadoop 1 0 2 src contrib eclipse plug
  • eclipse学习心得

    1运行程序 在后台遇到断点时 进入debug调试状态 作用域 功能 快捷键 全局 单步返回 F7 全局 单步跳过 F6 全局 单步跳入 F5 全局 单步跳入选择 Ctrl F5 全局 调试上次启动 F11 全局 继续 F8 全局 使用过滤器
  • Android强大的原生调试工具adb的常用命令

    文章目录 ADB简介 常用命令 列出链接的设备 进入设备的shell环境 设备日志 安装应用程序 卸载应用程序 将本地文件复制到调试设备上 将设备上的文件拉取到本地 启动程序 强制停止程序运行 截图 屏幕录制 列出调试设备所有的应用的报名
  • 《软件调试艺术》读后感七

    1 线程调试 对线程的调试用的最多的可能是thread命令了 查看程序中有多少线程使用Infothreads 进入到某个线程的内部使用thread count 这样就可以进入到count线程的内部 线程调试中用的最多的还有就是bt命令 这个
  • 绕过__chkesp堆栈检查

    前面很多注入相关的文章中都提到为了保证注入后原始程序能恢复正常的执行流 需要在编译器中关闭堆栈检查 为了解决问题 这是个好手段 但是不得不说这是回避问题 不是根本上解决问题 本文旨在解决这个问题 vs用 chkesp来实现堆栈检查 chke
  • 使用spyder3调试python程序的简明教程

    说是简明教程 其实是我自己尝试用spyder调试python程序的过程的一个记录 因为spyder的调试功能是基于pdb 而我又没有pdb的基础 所以刚开始上手时感觉很不习惯 而且那时我又很懒 没去找官方文档 仅仅在百度和csdn上找了找
  • (springmvc)页面找不到静态资源文件Failed to load resource: the server responded with a status of 404 (Not Found)

    今天打算整理之前写的一个插件功能上传到github 新建一个java项目 项目使用的是spring mvc框架 然后再调试页面的时候发现找不到静态资源文件 如下图所示 于是我第一时间检查jsp上页面资源的路径 经过确认 发现路径是没有
  • facebook stetho Android调试工具

    什么是Stetho 官网简介 Stetho is a debug bridge for Android applications enabling the powerful Chrome Developer Tools and much m
  • 原来gdb的底层调试原理这么简单

    一 前言 这篇文章来聊聊大名鼎鼎的GDB 它的豪门背景咱就不提了 和它的兄弟GCC一样是含着金钥匙出生的 在GNU的家族中的地位不可撼动 相信每位嵌入式开发工程师都使用过gdb来调试程序 如果你说没有用过 那只能说明你的开发经历还不够坎坷
  • 【Visual Studio】调试过程中VS卡死无响应

    最近在使用vs2022 debug调试过程中 经常出现vs2022直接卡死无响应 解决方案 第一种原因 是加载符号导致 调试 选项 符号 1 取消勾选 xxx 符号服务器 2 选择 仅加载指定的模块 第二种情况 VS卡死后 把崩溃dmp导出
  • LCD调试流程

    本来想学的更深入一些再来写这些总结 但想想 边学边写 记录成长过程也挺好的 下面自底向上 了解LCD的整个工作流程 一 LCD的组成结构和各结构的功能 1 背光板模组 提供光的来源 2 上下偏光板 TFT Glass Substrate 液
  • Tomcat配置内存和远程debug端口

    配置内存 需要在catalina bat中添加JAVA OPTS参数 如下内容 SET JAVA OPTS Xms256m Xmx1024m XX MaxNewSize 256m XX MaxPermSize 428m Duser time
  • android so 调试

    安卓调试 环境 tool JDK 8X 之前用15版本的 monitor一直无法启动 链接 https pan baidu com s 12LUwB7ZOVEcblAzkO8hxyA 提取码 5lw0 monitor bat 流程 开启调试
  • Sublimewebinspector 断点不能打上的解决方法

    最近老大在sublime上开发出了我们产品的开发包 这个开发包能像ZenCoding一样快速打出前端代码 这样开发者用我们产品的概率就大多了 但是对于产品中的js代码 现在还没有很好的工具 搬砖的我小有雄心壮志的想给我们的产品开发一个JS代

随机推荐

  • 通过集成FastJsonHttpMessageConverter将返回报文统一加密处理

    在编写接口中 为了安全起见 会将报文进行加密处理 如果每个返回报文都在controller处进行加密 当加密方式发生变化或多渠道接入返回不同密文时 改动较为繁琐 通过集成FastJsonHttpMessageConverter将返回报文可统
  • 网络线缆连接器和线槽

    一 信息插座 1 信息插座简介 信息插座是终端 工作站 与水平干线子系统连接的接口 在水平干线子系统中双绞线的两 端是直接压接到配线架和信息插座中的 不需要跳线 2 信息插座的配置 综合布线系统的设计 应该根据实际情况确定 所需信息插座个数
  • Pycharm配置优化

    优化python第三方库 优化界面 连接远程服务器 注意路径问题
  • 【华为OD统一考试B卷

    题目描述 3020年 空间通信集团的员工人数突破20亿人 即将遇到现有工号不够用的窘境 现在 请你负责调研新工号系统 继承历史传统 新的工号系统由小写英文字母 a z 和数字 0 9 两部分构成 新工号由一段英文字母开头 之后跟随一段数字
  • 一起学Docker:CMD与ENTRYPOINT的区别

    CMD CMD指令为启动的容器指定默认要运行的程序 程序运行结束 容器也就结束 CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖 类似于 RUN 指令 用于运行程序 但二者运行的时间点不同 CMD 在do
  • MQTT--Qt5编写MQTT-client客户端

    库的下载地址 https github com emqtt qmqtt 好不容易编译成功 于是写下经验 编译环境 桌面环境 Windows10 Qt5版本 开始 1 下载库文件 https github com emqtt qmqtt 2
  • 蓝桥杯真题 17省9-分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明

    问题描述 儿童节那天有K位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有N块巧克力 其中第i块是Hi x Wi的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们 切出的巧克力需要满足
  • Ros 端口配置

    IP gt services 转载于 https blog 51cto com jafy00 704251
  • 基于uml的面向对象的概要设计

    1 什么是概要设计 为什么要进行概要设计 白话解释 概要设计 顾名思意 大概简要的设计 大概简要是从整体来说 不是说不准确含糊之意 设计什么呢 前面我们进行了系统的需求分析 有两个成果 1 系统用例图 2 类图集合 所以我们的概要设计要在1
  • 训练图像识别神经网络,神经网络训练过程图解

    卷积神经网络怎么生成图片 需要使用类似GAN的生成模型去做 望采纳GAN的基本原理其实非常简单 这里以生成图片为例进行说明 假设我们有两个网络 G Generator 和D Discriminator 正如它的名字所暗示的那样 它们的功能分
  • 系统更新pip无法使用

    报错信息如下 WARNING pip is configured with locations that require TLS SSL however the ssl module in Python is not available p
  • Hadoop、Spark等5种大数据框架对比,你的项目该用哪种?

    Hadoop Spark等5种大数据框架对比 你的项目该用哪种 2016 11 23 大愚若智 译 InfoQ 作者丨Justin Ellingwood 译者丨大愚若智 审校丨Cindy 本文将介绍并对比5种主流大数据框架 助你更深层次了解
  • 毕业设计 树莓派+云平台实时室内环境监测系统

    文章目录 0 前言 1 简介 2 主要器件 3 DHT11温湿度传感器 4 具体实现 5 部分代码 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学
  • Google浏览器首页被篡改(非常有效的解决方法)

    问题描述 1 本人谷歌浏览器首页被hao 123篡改 2 浏览器输入chrome version 可以看到 命令行 最后面被篡改 解决方法 1 在chrome浏览器输入chrome version gt 复制命令行内容 gt 粘贴到浏览器属
  • 关于区块链的原理:去中心化的分布式记账系统

    区块链技术的核心是所有当前参与的节点共同维护交易及数据库 它使交易基于密码学原理而不基于信任 使得任何达成一致的双方 能够直接进行支付交易 不需第三方的参与 从技术上来讲 区块是一种记录交易的数据结构 反映了一笔交易的资金流向 系统中已经达
  • RFID在图书馆系统管理中的有哪些应用优势?

    RFID在图书馆系统管理中的应用优势 截至目前 基于RFID技术在图书馆行业的应用 算算已有十年有余 从传统的简单的自助借还图书到目前多种智能化功能的实现 其技术发展进步的速度非常迅速 尤其是与传统的条形码和磁条技术相比 具有其明显的优势
  • 交互式SHELL和非交互式SHELL、登录SHELL和非登录SHELL的区别

  • keil5在点击debug时,全速运行按钮不能按的情况

    在我程序编译完成后 下载了程序 点击debug进行调试 跳转到debug页面时 发现 run 按钮已经按下 但是不在运行代码 只是在空跑 出现这种情况 目前有以下几种情况 1 在 options for target 选项中的 target
  • Tableau_day6

    1 填充地图 1 1 各省售电量填充地图 导入数据 设置地理格式 双击 省市 生成一个符号地图 将当期值放入颜色 生成填充地图 在地理面积内进行颜色填充 设置颜色 设置未知 设置 位置 标签 显示位置信息 修改某些位置信息 要调整注释边框
  • 远程调试(Remote Debugging)

    当运行的程序出现问题时 我们通常通过调试来追踪和定位问题 但是 当运行错误的机器上没有调试工具 我们就需要实现远程调试 简单地说 就是要调试的程序和调试器不在一台机器上 移动端web调试 alert虽然是个土方法 但也是万能的 不过这样会中