首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android Studio调试器窗口中的数字是什么意思?

Android Studio调试器窗口中的数字是什么意思?
EN

Stack Overflow用户
提问于 2018-09-28 03:33:58
回答 1查看 362关注 0票数 5

突出显示的数字4580、4581等是什么意思?它们不是PID,这是用adb shell中的ps命令交叉检查的。

EN

回答 1

Stack Overflow用户

发布于 2018-10-03 01:24:27

简而言之:这个数字不一定是注册号,它可以是来自ObjectReferenceImpl的ID,后者是来自Java Debug interface (JDI)的ObjectReference接口的实现。

总而言之:通过对Idea社区代码库的分析,发现ThreadDescriptorImpl.java (ThreadDescriptorImpl)是负责提供要在调试窗口中显示的线程描述的类(请参阅与问题一起出现的上图)。该ID称为thread.uniqueID()。这里的线程是扩展ObjectReferenceProxyImplThreadReferenceProxyImpl类型,其中实现了uniqueID方法。此方法反过来从ObjectReference类型的对象返回一个uniqueID。粗略搜索后,在Idea代码库中找不到满足条件的ObjectReference定义。后来发现它隐藏在JDI接口的定义中。从Idea设置中找到的JDI实现jar中,发现ObjectReferenceImpl提供了uniqueID方法的最终实现。下面列出了代码片段:

代码语言:javascript
复制
  private long myID;

  private static synchronized long nextID()
  {
    return nextID++;
  }

  ObjectReferenceImpl(VirtualMachine aVm, Oop oRef)
  {
    super(aVm);
    this.saObject = oRef;
    this.myID = nextID();
  }

  public long uniqueID()
  {
    return this.myID;
  }

然而,在这么说和回答这个问题时,使用了像“可能”和“可能是”这样的词,因为在Idea社区版的源代码中没有立即找到ObjectReference实现的引用。而且,推论来自于jar实现。如果将来由查看此问题和答案的人提供直接参考,则可以修改答案以反映确定性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52543967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档