惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
GbyAI
GbyAI
爱范儿
爱范儿
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
罗磊的独立博客
Recent Announcements
Recent Announcements
博客园 - 司徒正美
M
MIT News - Artificial intelligence
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog RSS Feed
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
想反馈 bug 但不知道怎么说?带上「日志」让开发者更懂你 - ...
2019-08-22 · via 少数派

应用打开就闪退了,这个问题能不能修一修?

手机里的应用多了,遇到 bug 也是在所难免的事。但遇到问题后如果你像开头这样向开发者反馈问题,那你多半也难以得到直接的解决方案——无论是「闪退」「报错」还是其他常见问题,我们能够看见的其实都只是最终的呈现结果,并非导致问题的核心原因。

想让开发者帮你更好地定位并解决遇到的问题,正确地抓取 log 文件是一项必不可少的技能。

Log 文件是什么?

Log 是用来记录设备运行活动的日志,应用有应用的运行日志,系统有系统的运行日志……所以出现问题的时候,就需要我们找对应的日志。

一般来说,常见的系统 log 文件分为三种:Logcat,dmesg 以及 ramoops。它们的区别大致如下:

  • logcat 是名副其实的 Android 系统日志,记录系统的异常行为,比较常用;
  • dmesg 是内核日志,详细记录了每一个子系统(subsystem)的活动;
  • ramoops 是内存相关的日志,往往用于调查设备的意外重启。

一般的开发者需要前两种 log 比较多,如果不确定自己应该提交什么类型的 log,不妨先用合适的语言询问开发者。

获取 Log 文件其实很简单

一般来说有两种获取 log 的方式:1、通过应用获取(需要 root 权限,包含所有类型);以及通过 Android 调试桥(即 ADB,仅适用于 logcat 和 dmesg,获取 dmesg 仍然需要 root 权限)。

通过应用来获取 Log

获取 logcat

  1. 获取一个 logcat 应用,比如说 Matlog 或是 SysLog,这里以 Matlog 为例。
  2. 下载打开并授予其 root 权限,这时在应用的主页面就会显示出此时的日志。
  3. 点击右上角的「三个点」菜单按钮,点选 File,再点选 Record。
  4. 这时 Matlog 会弹出 log 命名对话框,默认的命名是「日期+时间」,此日志会保存在内部存储 /matlog/savedlogs/ 下。
  5. 点击确定之后就可以将 Matlog 放在后台,去复现错误了。
  6. 成功复现错误之后回到 Matlog,点击右下角的「停止」按钮,这时 Matlog 会将刚才录制的 logcat 显示在屏幕上。点击右上角菜单按钮选择 Share 即可将应用日志 logcat,内核日志 dmesg 以及本机信息打包分享出去。

获取 dmesg

除了通过 Matlog 获取打包的 dmesg,使用终端(Terminal)也是获取内核 log 的一种好办法。

  1. 首先,还是要获取一个终端模拟器应用,比如说我们之前介绍过的 Termux
  2. 使用命令 su 获取 root 权限,键入命令 dmesg > /sdcard/test.log
  3. 完成之后 dmesg 就会保存在内部存储根目录下,名为 test.log 的文件中。

获取 ramoops

  1. 首先要先获取一个可以访问系统目录的文件浏览器,比如 Mixplorer 等。
  2. 在文件管理器中定位到 /sys/fs/pstore 并找到 console-ramoops 或者 console-ramoops1 等类似文件。
  3. 将这个文件复制到内部存储,并提交给开发者。

通过 ADB 来获取 log 文件

1、首先在电脑上配备 ADB 环境,配置的文章可以参考我们之前的文章:Windows 、macOS

关于拷贝路径,Windows 可以点击上方路径栏并进行复制粘贴;macOS 则需要先选择「显示」 - 「显示路径栏」之后在路径栏上右键,并复制地址。

2、开启「开发者选项」中的「USB 调试」。

3、将你的设备通过 USB 连接到电脑。

4、在终端中键入 cd <文件夹的路径> 以进入该文件夹,这里要将<文件夹的路径>替换为解压出来的文件夹的路径。

在终端中可以使用 adb devices 或者 ./adb devices 来检查设备的连接情况,如果返回了如图所示的提示,那么说明设备已经成功连接。

5、使用此命令 adb logcat -c 或者 ./adb logcat -c 来清理 logcat 缓存

6、获取 log 文件:

获取 logcat 请输入:adb logcat -d > test.log 或者 ./adb logcat -d > test.log

获取 dmesg 请输入:adb shell dmesg > test.log 或者 ./adb shell dmesg > test.log

生成的 log 文件会存放在 ADB 工具文件夹(默认即 platform-tools)下。

最后,即便无法获取 log 文件,也可以在向开发者汇报 bug 时附上可以稳定重现的步骤或是对于此 bug 的详细描述,至少可以帮助开发者做出初步的筛选。

结语

遇到问题的时候,优先寻求搜索引擎或者社群里的其它成员是比较合适的方式,而且很大概率能够解决问题,这是因为这些问题往往不只是在自己身上发生但是当你付出了一些尝试,仍然没有解决问题的时候,向开发者求助就成为你的首选了。

一般应用都会内建反馈渠道自动发送应用运行的 log,或者是会附上加入社群的联系方式、应用的官方社交帐号、电子邮件等,通过这些渠道都可以直接联系到开发团队,而如果当你使用的是第三方内核、ROM 时,也可以去论坛发帖处留言,或者加入开发者创建的社群里直接联系,提供 log。

要相信,优秀的开发团队一定会欢迎、重视并感谢这些有价值的反馈。

关联阅读:

参考资料: