当前位置: 首页 > 知识库问答 >
问题:

不理解此“调用堆栈”答案(Android)

孔棋
2023-03-14

我是Android Studio(2.1.2)的新手,我试图在调试会话期间找到调用堆栈。在堆栈溢出问题上,我发现了一个我认为最完美的问题:Android Studio-调试Android应用程序时,我在哪里可以看到callstack。。。但是所有的答案都只引用了一个显示当前正在运行的线程的窗口。如果我在断点处停止,它会显示一个红色复选标记,指示我在该线程中停止。但单击它并不会扩展到调用堆栈。

“调用堆栈”在Android Studio中是否有不同的含义?我所说的“调用堆栈”是指,它显示我在例程Xyz()中的foo行停止,在例程Abc()中从行栏调用Xyz(),在例程Ijk()中从n行调用Abc(),等等,一直到开始。

在其他IDE中,例如Visual Studio,您可以单击调用堆栈中的每一行,并在编辑器中访问该源代码,并在调用时检查变量

因此,如果在Android Studio中这不是所谓的“调用堆栈”,那么它叫什么?在调试器中我在哪里可以看到它?

共有2个答案

百里弘致
2023-03-14

你可以在

调用层次结构弹出窗口

快捷方式:Ctrl Alt H

裁判:https://github.com/pavlospt/Android-Studio-Tips-by-Philippe-Breault/wiki/The-Call-Hierarchy-Popup

司徒云
2023-03-14

您想要的是在Android Studio调试器的框架窗格中。当它停止时,您实际上不需要单击红色复选框。

框架窗格允许您访问应用程序的线程列表、导出到文本文件和自定义线程表示。对于每个线程,您可以查看堆栈帧、检查帧、在帧之间导航,以及在编辑器中自动跳转到帧的源代码。您可以通过窗格顶部的线程选择器下拉列表选择线程。线程的状态和类型由一个特殊图标和线程名称旁边的文本注释指示。

 类似资料:
  • 我想了解SWIFT中的堆栈和堆中存储了什么。我有一个粗略的估计:你打印的所有东西和内存地址都不是值,那些存储在堆栈中,而打印出来的是值,那些在堆中,基本上是根据值和引用类型。我完全错了吗?另外,可以提供堆栈/堆的可视化表示吗?

  • 我是一名大学生,学习球拍/方案和C作为我的CS学位的入门课程。 我在网上读到,在C语言中使用迭代而不是递归通常是最佳实践,因为递归由于将堆栈帧保存到调用堆栈上而代价高昂。。。 现在,在类似于Scheme的函数式语言中,递归一直在使用。我知道尾部递归在Scheme中是一个巨大的优势,据我所知,它只需要一个堆栈帧(有人能澄清这一点吗?)无论递归有多深。 我的问题是:非尾递归呢?每个函数应用程序是否保存

  • 问题内容: 我最近发现了一个导致NullPointerException的错误。使用标准slf4j语句捕获并记录该异常。下面的节略代码: 如您所见,没有任何幻想。但是,在我们拥有的所有异常日志记录语句中,仅此一条不会打印堆栈跟踪。它仅打印消息(表示为“ …”)和异常类的名称(java.lang.NullPointerException)。 由于对异常的堆栈跟踪是延迟加载的,因此我认为可能存在某种指

  • 问题内容: 我正在寻找一种在PHP中打印调用堆栈的方法。 如果函数刷新IO缓冲区,则奖励积分。 问题答案: 如果要生成回溯,则正在寻找 和/或 。 例如,第一个将为您提供一个像这样的数组 (引用手册) : 它们显然不会刷新I / O缓冲区,但是您可以使用 和/或自己进行操作 。 (请参阅第一个手册页,以了解为什么使用“和/或” ;-))

  • 问题内容: 在Java多线程中,术语和之间在语义上有区别吗? 问题答案: 每个线程都有自己的调用堆栈,“调用堆栈”和“线程堆栈”是同一件事。将其称为“线程堆栈”只是强调了调用堆栈特定于线程。 Bill Venners将此称为Java堆栈: 启动新线程时,Java虚拟机将为该线程创建一个新的Java堆栈。如前所述,Java堆栈将线程的状态存储在离散的帧中。Java虚拟机仅直接在Java堆栈上执行两项

  • 我正在调用一个外部API,这是缓慢的。目前,如果我已经调用API获取一些订单一段时间,调用可以分成页面(分页)。 因此,获取订单可能是进行多个调用,而不是1个调用。有时,每次呼叫可能是10秒左右,所以总共可能是一分钟左右,这太长了。 null 如果有人能给我指明正确的方向--那将不胜感激。