Android调试的工作原理是什么,为什么我的应用在调试时会有不同的行为?

罗伯特·恩德

我有一个可解码传入的H264视频流的应用程序。正常使用该应用程序时,在观看视频流时会出现视觉失真。

奇怪的是,一旦我开始调试过程,工件就消失了!当我停止调试(即从PC上拔下设备的电源)时,工件再次出现。

这就是为什么我想向您了解专家:为什么在Android上进行调试如何工作,以及它以什么方式改变流程的行为?

淡淡的

我将假设您使用的是Java语言调试器,而不是像gdb这样的本机调试器。

连接调试器时,Dalvik停止执行JIT编译的代码,并在解释器中运行所有内容。它使用效率较低的解释器版本,该版本具有一些额外的调试器支持,因此,如果您(说)“跳过”方法调用,并且该方法引发异常,则停止。(如果所做的只是在以下指令上设置了一个临时断点,则您永远都不会遇到它。)

“调试解释器”和常规的“便携式”解释器是从基本相同的源代码构建的-它是相同的源文件,两次构建,具有不同的宏定义-因此行为上的差异通常与性能有关,而与执行无关。

JIT编译器本机生成并执行代码,因此有很多不同。像解释器一样,在过去的几年中,它的变化不大,除了偶尔的OEM修改外,它不太可能成为问题的起因。

调试和非调试之间最显着的区别是性能。带有竞争条件的任何事物的行为都会有所不同,因为您正在从使用JIT编译的本机代码的快速解释器过渡到较慢的解释器。在不知道代码结构的情况下,无法确定这是否是问题所在,但是您可以在此处找到AndroidSMP的概述

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

知道为什么我发布的 Android 应用在打开时会立即关闭吗?

来自分类Dev

如果我调试或运行它,为什么会有两个不同的结果?

来自分类Dev

为什么会有这种不同的行为?我对吗?

来自分类Dev

来源与 为什么会有不同的行为?

来自分类Dev

Android:为什么我的应用在PlayStore上询问设备ID和通话信息

来自分类Dev

为什么此角度应用在重新加载时会中断?

来自分类Dev

为什么当我使用“end”或“\n”或“”(空格)语句时会有所不同?

来自分类Dev

为什么我的应用在预览版和模拟器上看起来不同?

来自分类Dev

为什么在单击Resharper“运行所有测试”按钮与使用键盘快捷键命令时会有不同的行为?

来自分类Dev

地图与清单;为什么会有不同的行为?

来自分类Dev

为什么我的应用在实现导航图时在 mainActivity 中添加片段后似乎没有响应?

来自分类Dev

为什么我的应用在高分辨率Android手机上看起来更小?

来自分类Dev

当我的应用在iOS上终止时,保存NSUserDefaults的正确方法是什么

来自分类Dev

当我的应用在iOS上终止时,保存NSUserDefaults的正确方法是什么

来自分类Dev

为什么我的vue应用在运行`npm run serve`后不能启动?

来自分类Dev

为什么在Visual Studio外部运行时,我的剪贴板操作应用程序的行为会有所不同?

来自分类Dev

为什么应用在调用函数时滞后很多

来自分类Dev

为什么我对swicthAll有不同的行为

来自分类Dev

当我开始调试Xamarin Android应用程序时,为什么不能达到断点?

来自分类Dev

为什么我不能在设备上调试Delphi XE7 Android应用程序?

来自分类Dev

当计数器在我的班级较大时,为什么Java线程的行为会有所不同?

来自分类Dev

“运行为Android应用程序”和“调试为Android应用程序”之间有什么区别?

来自分类Dev

为什么默认情况下无法调试Android应用?

来自分类Dev

Flutter应用在“ Flutter Clean”和调试后崩溃

来自分类Dev

为什么智能指针数据成员的不完整类型和原始指针数据成员的父对象销毁时会有不同的行为?

来自分类Dev

为什么Visual Studio在调试时会以不同的方式对待ANSI Escape代码?

来自分类Dev

为什么我的代码调试没有完成?

来自分类Dev

为什么将通配符放在grep短语的开头或结尾时会有所不同?

来自分类Dev

为什么我的Flutter应用在IOS模拟器上看起来不错,但在Android上却溢出了?

Related 相关文章

  1. 1

    知道为什么我发布的 Android 应用在打开时会立即关闭吗?

  2. 2

    如果我调试或运行它,为什么会有两个不同的结果?

  3. 3

    为什么会有这种不同的行为?我对吗?

  4. 4

    来源与 为什么会有不同的行为?

  5. 5

    Android:为什么我的应用在PlayStore上询问设备ID和通话信息

  6. 6

    为什么此角度应用在重新加载时会中断?

  7. 7

    为什么当我使用“end”或“\n”或“”(空格)语句时会有所不同?

  8. 8

    为什么我的应用在预览版和模拟器上看起来不同?

  9. 9

    为什么在单击Resharper“运行所有测试”按钮与使用键盘快捷键命令时会有不同的行为?

  10. 10

    地图与清单;为什么会有不同的行为?

  11. 11

    为什么我的应用在实现导航图时在 mainActivity 中添加片段后似乎没有响应?

  12. 12

    为什么我的应用在高分辨率Android手机上看起来更小?

  13. 13

    当我的应用在iOS上终止时,保存NSUserDefaults的正确方法是什么

  14. 14

    当我的应用在iOS上终止时,保存NSUserDefaults的正确方法是什么

  15. 15

    为什么我的vue应用在运行`npm run serve`后不能启动?

  16. 16

    为什么在Visual Studio外部运行时,我的剪贴板操作应用程序的行为会有所不同?

  17. 17

    为什么应用在调用函数时滞后很多

  18. 18

    为什么我对swicthAll有不同的行为

  19. 19

    当我开始调试Xamarin Android应用程序时,为什么不能达到断点?

  20. 20

    为什么我不能在设备上调试Delphi XE7 Android应用程序?

  21. 21

    当计数器在我的班级较大时,为什么Java线程的行为会有所不同?

  22. 22

    “运行为Android应用程序”和“调试为Android应用程序”之间有什么区别?

  23. 23

    为什么默认情况下无法调试Android应用?

  24. 24

    Flutter应用在“ Flutter Clean”和调试后崩溃

  25. 25

    为什么智能指针数据成员的不完整类型和原始指针数据成员的父对象销毁时会有不同的行为?

  26. 26

    为什么Visual Studio在调试时会以不同的方式对待ANSI Escape代码?

  27. 27

    为什么我的代码调试没有完成?

  28. 28

    为什么将通配符放在grep短语的开头或结尾时会有所不同?

  29. 29

    为什么我的Flutter应用在IOS模拟器上看起来不错,但在Android上却溢出了?

热门标签

归档