首页 > 其他分享 >DEBUG [1] Android进行真机代码调试&FAQ

DEBUG [1] Android进行真机代码调试&FAQ

时间:2024-07-11 12:29:02浏览次数:21  
标签:选项 真机 FAQ Unity VS DEBUG Android 调试 页面

前言

        尽管我们有能力在非调试模式下通过ADB或者Android Logcat捕捉到程序运行时的日志,但它提供的信息的能力有限,想要更确切的掌握程序的运行状态就必须要进行真机调试,这是开发过程中必不可少的技能。

调试环境

版本: Unity 6
机型: OPPO
安卓版本: Android 13

CPU架构:ARMx64

VS版本: 社区版2022

环境搭建
检查VS IDE是否安装支持Unity程序调试的组件
  1. 点击菜单栏 工具 选项
  2. 点击 获取工具和功能
  3. VS 会自动弹出 VS Installar 的修改页面,并停留在 工作负荷 页签
  4. 切换到 单个组件 页签
  5. 在搜索组件框中输入 unity
  6. 确保 Visual Studio Tools for Unity 处于勾选状态
检查手机是否进入开发者选项

不同的手机品牌,操作会有差异,但总体流程一样,这里以OPPO PHJ110为例

  1. 打开 设置 页面
  2. 进入 关于本机 页面
  3. 进入 版本信息 页面
  4. 连续点击 版本号 N次 直到文字提示 “您已进入开发者模式
  5. 返回到 设置 页面
  6. 进入 其他设置 页面
  7. 进入 开发者选项 页面
  8. 打开 开发者选项
  9. 打开 USB调试 选项
  10. 选择USB配置 选项中,选择 媒体传输协议

当手机的 开发者选项 页面中的 开发者选项 不在激活状态后,其他设置 页面中的 开发者选项 页面的功能入口会隐藏,需要重新操作激活。

构建选项

确保 Platform Settings 中的 Debelopment Build & Script Debugging & Wait For Managed Debugger 处于勾选状态,就可以开始构建Debug包了。

VS 通过选择Unity程序实例进行调试
  1. 打开 Android APP
  2. App 会弹出 Debug (Player) 弹窗,并告诉我们调试程序应该连接的 端口号
  3. 在VS工具栏打开 调试 下拉菜单
  4. 选择 附加Unity调试程序
  5. 在 选择Unity实例 弹窗中 选中连接的 Android Player
  6. 等待VS IDE进入到 调试状态
  7. 点击App Debug (Player) 弹窗 上的 OK 按钮
VS 通过IP:PORT连接进行调试
  1. 打开 Android APP
  2. App 会弹出 Debug (Player) 弹窗,并告诉我们调试程序应该连接的 端口号
  3. 在VS工具栏打开 调试 下拉菜单
  4. 选择 附加Unity调试程序
  5. 选择Unity实例 弹窗中,点击 输入IP 按钮
  6. 自定义IP终结点 弹窗中输入 IP地址端口号,然后点击 确定 按钮
  7. 等待VS IDE进入到 调试状态
  8. 点击App Debug (Player) 弹窗 上的 OK 按钮

上面两种调试方法,只有中间橘黄色的操作步骤不同,结果是相同的。

FAQ
怎么样获得真机的IP地址?

方法1 通过Unity Android Logcat 获取真机的IP地址

  1. 打开Unity工具栏中的 Window 下拉菜单
  2. 打开 Analysis 选项
  3. 打开 Android Logcat 窗口,确保它已经成功连接到 APP
  4. 点击 Tag 页签,设置 Unity 选项
  5. 在日志搜索框中搜索关键字 interfaces on host :
  6. 选中 Found x interfaces on host: 日志
  7. 清空 日志搜索框中 的关键字
  8. 滑动日志找到当前选中的日志
  9. 在Found x interfaces on host: 日志下方紧跟着n条日志,其中n=x
  10. 192.168.0.xxx 开头的IP,就是真机使用的本地网络IP

方法2 通过adb工具查询的IP地址

  1. 打开控制台
  2. 使用 adb devices 检验手机的连接状态
  3. 输入下面命令获取 连接手机的 ip地址,选择 192.168.0.xxx 作为调试的连接地址
adb shell ip addr show wlan0
成功附加到程序后VS IDE始终无法进入到调试状态怎么办?

        当你成功附加到调试程序后,断点为红色实心的小球,说明进入了调试状态,否则说明IDE还没有进入调试状态。当IDE没有进入到调试状态时,强行开始调试,APP进程会自动挂起,并等待IDE完成调试状态转换。

        长时间僵持在这种情况下,只有两种选择,要么杀掉调试进程,让APP运行,要么杀掉APP,结束调试。

        这时候很大概率,是因为IDE不具备当下App代码的一种调试能力,我尝试过在ARMx64的真机上构建了ARMv7的Mono版本的App,它可以正常运行,但始终无法进入到调试状态。我的解决办法是构建了IL2CPP的ARMx64版本。如果你也遇到了这样的情况,建议你尝试下,是否跟我是相同的情况。

        

标签:选项,真机,FAQ,Unity,VS,DEBUG,Android,调试,页面
From: https://blog.csdn.net/UniMark/article/details/140305935

相关文章

  • Android 11 禁用 adb root (userdebug版本)
    adbshelllogcat-sadbd/system/core/adb/daemon/services.cppunique_fddaemon_service_to_fd(std::string_viewname,atransport*transport){...#ifdefined(__ANDROID__)if(name.starts_with("framebuffer:")){returncreate......
  • 对于爬虫中debug的使用总结
    在刚开始学习爬虫时,我只知道意味使用'RUN',一直觉得旁边的'DUBUG'很鸡肋,不知道怎么用,感觉一个'RUN'就够了,直到......有一次我无意在for循环处打了一个断点,又恰好点到'DUBUG',你猜怎么着,嘿,点一下它循环一次,我感觉瞬间找到了新大陆,在以前我在测试的时候,都是在哪个地方加一个print......
  • [FAQ] a 链接的 rel=noopener 含义
    HTML中的 <a> 标签的 rel 属性用于定义与链接文档的关系。当 rel="noopener" 被使用时,它表示链接的目标文档不应该拥有对原始文档的任何引用能力。具体来说,这意呈现在以下几点: 1.安全增强:当一个链接在一个新的浏览上下文中打开(例如一个新的标签页或窗口),rel="noopene......
  • C++开发调试工具:GDB调试,windebug调试,adb调试
    我们在C++开发过程中时常避免不了要调试追踪,一下介绍最主流的三种调试工具:一.GDB调试1.coredump文件:coredump文件是程序异常时系统产生的错误日志文件,即核心转储文件;编译一个debug程序,必须是debug版本,否则无法产生coredump文件;编译命令:g++test.cpp-omytest-g,必须要......
  • nvidia&QM9700&9790 ib NDR交换机FAQ
    一、交换机简介:基于NVIDIAquantum-2的QM9700和QM9790交换系统提供64个逻辑端口,在1U标准机箱设计中,每个逻辑端口400Gb/sib,支持32个800G/sOSFP光模块,支持最新的NDR技术,NVIDIAQuantum-2带来了一个高速、极低延迟和可扩展的解决方案,其中包含最先进的技术,如远程直接内存访问(RD......
  • 海康VM应用FAQ 1.2 全局脚本--方案加载后自动执行某流程
    【需求描述】VM方案加载成功后,自动执行某个流程。【应用场景】每次上电打开软件后,告知上位机软件准备就绪的信号;监控VM软件的运行状态,判断软件是否有奔溃,即Vm方案加载后连续运行某一流程,与上位机进行交互(与通信的心跳管理类似,不同的是通信的心跳只能监控通信是否断开,且仅为......
  • Coding:小写一个debugfs
    Coding:小写一个debugfs​ 上一次整活还是在上一个月,写了一个简单的module并且熟悉了module的挂载查看和卸载。这一次我们自然玩一个大的,就是利用linux的debugfsAPI写一个调试文件系统。​ 事实上,底层的API全写好了,我们就是简单的调调API就成的事情!事先检查​ 第一步是检查我......
  • Advanced .Net Debugging 10:事后调试
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第十篇文章。这篇文章的内容是原书的第三部分的【高级主题】的第八章【事后调试】。前面几篇文章,我们介绍了很多工具,可以帮助大家找出问题的所在。但是,有一类问题我们是没办法使用这些工具来解决的,那就是已经发布的......
  • debug调试实现 - printf打印日志
    debug调试实现-printf打印日志printf执行一次很费时间,所以需要在调试结束后,把printf去掉1.设置一个开关/功能裁剪:打开时有printf关闭没有使用宏定义设计#defineDEBUG1#if(DEBUG==1) //在宏定义中if判断------------------------#definedebug_printf() printf......
  • [debug]解决cmake编译报错:can not be used when making a PIE object:recompile with -
    问题描述最近在跟施磊老师的高性能服务器项目,使用make命令后一直报错以下问题解决方法报错一大堆recompilewith-fPIC,多半是链接静态库是出错了。根据网上经验,在CmakeLists文件中加入-no-pie,但是两种方法进行尝试后都没有效果。#第一种方法add_compile_options(-fPIC)#......