如何获取 Binder 事务缓冲区的内容以进行故障排除

2024-03-20

有没有办法以编程方式或通过调试工具来了解 Binder 事务缓冲区中保存的当前事务?

有时,通常在运行数小时/数天后,我的应用程序会崩溃并出现如下错误跟踪:

08-30 09:49:57.459  1879  1904 E JavaBinder: !!! FAILED BINDER TRANSACTION !!!
08-30 09:49:57.469  1879  1904 W BroadcastQueue: Exception when sending broadcast to ComponentInfo{com.mycompany.myapp/com.mycompany.myapp.receiver.UpdateContentReceiver}
08-30 09:49:57.469  1879  1904 W BroadcastQueue: android.os.TransactionTooLargeException
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at android.os.BinderProxy.transact(Native Method)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at android.app.ApplicationThreadProxy.scheduleReceiver(ApplicationThreadNative.java:771)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at com.android.server.am.BroadcastQueue.processCurBroadcastLocked(BroadcastQueue.java:231)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:778)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at com.android.server.am.BroadcastQueue$1.handleMessage(BroadcastQueue.java:140)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at android.os.Handler.dispatchMessage(Handler.java:99)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at android.os.Looper.loop(Looper.java:137)
08-30 09:49:57.469  1879  1904 W BroadcastQueue:    at com.android.server.am.ActivityManagerService$AThread.run(ActivityManagerService.java:1487)

我试图发送的广播没有额外内容,因此它的大小可以忽略不计。根据文档交易太大异常 http://developer.android.com/reference/android/os/TransactionTooLargeException.html:

Binder 事务缓冲区的固定大小有限,目前为 1Mb,由进程中所有正在进行的事务共享。因此,当有许多事务正在进行时,即使大多数单个事务的大小适中,也可能会引发此异常。

我的假设是缓冲区被其他东西(我的应用程序,我正在使用的库之一或系统)填满,当它几乎满时,它会抛出TransactionTooLargeException。通过检查缓冲区的内容,我可以轻松发现问题。


如幻灯片 67 所示http://www.slideshare.net/jserv/android-ipc-mechanism http://www.slideshare.net/jserv/android-ipc-mechanism,可以通过debugfs找到Binder事务缓冲区的详细信息。安装后

mount -t debugfs none /sys/kernel/debug

活页夹信息可以在/sys/kernel/debug/binder/,人们可以在其中获取全局信息以及每个进程的信息。

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

如何获取 Binder 事务缓冲区的内容以进行故障排除 的相关文章

  • Android TelecomManager 中的 addIncomingCall 没有执行任何操作

    我正在尝试使用本机 Android 来电 UI 我有一个连接服务 并且我已经成功注册了一个电话帐户 但在我调用方法 addNewIncomingCall 后什么也没有发生 对我所缺少的有什么想法吗 显现
  • 如何访问 Android 心率传感器原始数据? (反射光,不是心跳)

    心率传感器上的 android sdk 仅返回计算出的 bpm 我对此不感兴趣 我需要访问 Android 心率传感器原始数据 例如就反射值的强度而言将会很大 因为心率传感器基本上使用 LED 并测量随时间变化的反射率 如果可能 访问由任何
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • 升级到最新支持库后Android JACK编译器错误

    Android Studio 2 2 3 Windows 10 64位 构建工具版本 25 Android Gradle插件版本2 2 3 升级到最新的支持库 从 23 4 0 到 25 1 0 并更改编译版本 从 23 到 25 后 我收
  • 4 天后,应用仍未在 Google Play 搜索中编入索引

    我已经在 4 天前在 google play 上发布了我的第一个应用程序 语音到短信 但我仍然无法通过其名称或开发人员名称在搜索中找到我的应用程序 我只能通过包名称或真实应用程序名称 但不带空格 找到我的应用程序 VoiceToSMS 链接
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • java.lang.IllegalAccessError:预验证类中的类引用在运行测试项目时解析为意外实现?

    在实施项目工作正常之后 我使用第三方库 zxing 实施了项目 然后在我编写了一个测试项目对我的项目进行单元测试之后 运行测试项目后 主项目 类及其方法没有给出任何信息错误 但如果在主项目的该方法中使用任何 zxing 框架类 则会在运行时
  • 如何清除Android剪贴板?

    我发现的方法都不起作用 这是我尝试过的 1 使用clearPrimaryClip 的方法ClipboardManager class ClipboardManager clipboard ClipboardManager getSystem
  • 使用 DataBinding 测试片段时膨胀类 Fragment 时出错

    有人可以帮我解决这个问题吗 在我的测试中 我想检查登录按钮是否显示在起始页上 今天我已经为这个错误苦苦挣扎了一段时间 我不知道应该如何解决它 我在这里错过了什么 也许这个问题与这个问题有些相似 Espresso 测试失败 并显示 java
  • 如何在 60 分钟后删除共享首选项

    我想存储登录数据 但希望在 60 分钟后删除该数据 执行此操作的正确方法是什么 在这 60 分钟内可以关闭 停止 打开应用程序 我不想使用内部数据库 这是我的访问代码SharedPreferences sharedpreferences g
  • Jetpack Compose:制作全屏(绝对定位)组件

    我怎样才能在全屏渲染树的深处制作一个可组合的 类似于Dialog可组合作品 例如 当用户单击图像时 它会显示该图像的全屏预览 而无需更改当前路线 我可以用 CSS 来做到这一点position absolute or position fi
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • 如何知道我的应用程序的活动计数?

    我的应用程序中有多项活动 请考虑以下案例 Activity A 调用 Activity B B 调用 C 当用户按后退键时 C 生成通知并转到 B 现在再次按后退 因此将显示 A 再次按后退键也会终止 A 并显示通知 现在 当用户按下通知图
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • TabLayout 的不同 tabMode

    我正在使用 ViewPager 和 TabLayout 如果选项卡可以放置在显示 tabMode 上 则它们必须是 app tabMode fixed else app tabMode scrollable 我怎样才能做到这一点 我不明白你
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一
  • 在数组列表中过滤 Filterable 不取消之前的过滤

    我看过过滤器方法文档 其中显示调用过滤器会取消所有先前未执行的过滤请求 并发布一个稍后将执行的新过滤请求 但我收到的实际回调有些不同 在我的实现中 它不会取消先前的过滤器请求并调用publishResults 最近一次搜索条件后的上一次搜索
  • 如何从DataSource.Factory获取数据

    我必须调用此方法才能获取所有人员 我根本无法修改这个方法 Query SELECT FROM PERSON TABLE ORDER BY NAME DESC abstract fun getElements DataSource Facto

随机推荐

  • SceneBuilder 2:控制器类是否必须与视图 FXML 文件位于同一文件夹中?

    我喜欢 JavaFX 和 SceneBuilder 但是当它们不在同一个文件夹中时 我就是不知道如何让 SceneBuilder 将我的 FXML 视图与其 Java 控制器链接起来 我只想有这个文件夹结构 package model vi
  • Google 地图 API v3 - 鼠标移动和单击事件组合

    如果我将一个单击事件连接到我的地图 然后我连接了一个鼠标移动事件 则单击事件将不再起作用 我想没有人知道这件事吧 顺便说一句 这是 3 4 版本中的 举个简单的例子 var map function initialize var myLat
  • 当 RichTextBox 刚刚加载/为空时,WPF EditingCommands 不起作用?

    这是一个非常简单的代码示例
  • 迁移到.Net Core 3后JsonPatchDocument为空

    我有一个包含多个补丁操作的 AspNetCore WebApi Project 它在 Core 2 2 上运行良好 迁移到 Core 3 后 FromBody JsonPatchDocument
  • 3路快速排序(C实现)

    我试着实施 https github com p1v0t Sort一些算法是使用 C 的纯通用算法 我坚持使用 3 路快速排序 但不知何故 实现没有给出正确的输出 输出几乎已排序 但某些键不在应有的位置 代码如下 提前致谢 include
  • SQL Server:表中的最大行数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我开发的软件在其数据库表之一 SQL Server 版本 8 9 或 10 中存储大量数据 每天大约有 100 000 条记录插入到该表中
  • Ruby 1.9.2 和 Rails 3 无法打开 Rails 控制台

    gkaykck main myApplication rails console usr local lib ruby 1 9 1 irb completion rb 9 in require no such file to load re
  • Java Mail MimeUtility 编码文本 UnsupportedEncodingException BASE64

    作为我的一部分J2EE应用程序的电子邮件服务 我编码成BASE64 body MimeUtility encodeText orig mail body UTF 8 BASE64 但在某些情况下它会抛出异常 java io Unsuppor
  • Powershell替换存储在多个文件夹中的多个文件中的文本

    我想替换多个文件和文件夹中的文本 文件夹名称发生变化 但文件名始终为 config xml fileName Get ChildItem C config app config xml Recurse Get Content fileNam
  • 如何通过 Cloud DNS api 将自定义域映射到应用程序引擎应用?

    是否有任何文档解释如何仅通过 Cloud DNS API 或任何其他 Google Cloud API 将自定义域映射到 App Engine 上托管的应用 我已经为 www my domain com 添加了 CNAME 记录 指向 gh
  • 如何在asp.net中删除.aspx .asmx后缀

    我们的大部分应用程序都是基于asp net 所以所有的 url 都会有后缀 如 aspx 或 asmx 我想知道是否有什么想法可以删除它们 查看以下教程之一 URL路由 ASP Net 4 0 及更高版本 使用 ASP NET 4 Web
  • 使用java下载zip文件?

    我正在使用 Java 从 Web 服务器下载 zip 文件 但不知何故我在每个文件中丢失了大约 2kb 我不知道为什么 因为相同的代码可以很好地处理其他格式 例如文本 mp3 等 任何帮助表示赞赏 这是我的代码 public void do
  • 如何折叠区域中的空白?

    假设我有这个列表文本文件 field1 variable length field variable length field aaaaaa aaaa aaaaaaaaa bbbbbb bbbbbbbbbbbbbbbbbbbb bbbb 我
  • 如何按顺序执行多个方法?

    强制方法按顺序执行的最佳方法是什么 我有三个方法 但我希望方法1在方法2之前完成 然后当方法2完成时 执行方法3 Example void Method1 void Method2 void Method3 self Method1 sel
  • 通话中状态栏如何影响 ViewController 视图大小?

    我试图理解如何view关联到一个UITabBarController UINavigationController or UIViewController当通话状态栏切换时做出反应 我的问题是它们的行为似乎不同 这会给我带来副作用 我制作了
  • 错误:无法启动新线程

    我有一个使用以下配置运行的网站 Django mod wsgi 阿帕奇 在一个用户的请求中 我向另一个服务发送另一个HTTP请求 并通过python的httplib库解决了这个问题 但有时此服务得不到答复的时间太长 并且 httplib 的
  • 通过 URL 自动登录用户

    我每周向网站的注册会员发送一封邮件 其中包含该网站上私人页面的 URL 出于可用性目的 我不希望用户在单击 URL 后必须提供凭据 我正在使用 ASP NET 会员提供程序模型 Question 我如何实现这一点 以便用户可以通过单击专门的
  • 使用传递的参数附加方法后分离事件处理程序

    我需要将参数 在 C 中 传递给事件处理程序 然后能够分离事件处理程序 我附加事件处理程序并传递参数 map MouseLeftButtonUp sender e gt map MouseLeftButtonUp2 sender e sho
  • Python 导入机制

    我有两个相关的 Python 导入 问题 它们很容易测试 但我想要语言定义的答案而不是特定于实现的答案 而且我也对样式 约定感兴趣 所以我在这里问 1 如果模块 A 导入模块 B 模块 B 导入模块 C 模块 A 中的代码是否可以在不显式导
  • 如何获取 Binder 事务缓冲区的内容以进行故障排除

    有没有办法以编程方式或通过调试工具来了解 Binder 事务缓冲区中保存的当前事务 有时 通常在运行数小时 数天后 我的应用程序会崩溃并出现如下错误跟踪 08 30 09 49 57 459 1879 1904 E JavaBinder F