当前位置: 首页 > 面试题库 >

确定当前调用堆栈(用于诊断目的)

李兴庆
2023-03-14
问题内容

出于诊断目的,有时我需要存储导致给定状态转换(例如授予锁,提交事务等)的调用堆栈,以便以后出现问题时,我可以找出最初触发状态转换的人员。

当前,我知道的唯一检索调用堆栈的方法类似于以下代码片段,我认为这非常丑陋:

StackTraceElement[] cause;
try {
  throw new Exception();
} catch (Exception e) {
  cause = e.getStackTrace();
}

有人知道实现此目标的更好方法吗?


问题答案:

我认为您可以通过以下方式获得相同的结果:

StackTraceElement[] cause = Thread.currentThread().getStackTrace();


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

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

  • 我有一个用Java定义的,用于在工作流中导航。 我需要能够接受一个字符串,检查堆栈,看看它是否有多个出现,然后弹出元素直到该字符串的“最底部”出现。“截断”对我想做的事情的描述可能很糟糕。“pop直到我命中任意索引”可能更接近我需要的。

  • 本文向大家介绍在C ++中正确使用堆栈和堆?,包括了在C ++中正确使用堆栈和堆?的使用技巧和注意事项,需要的朋友参考一下 堆栈-函数内部声明的所有变量将占用堆栈中的内存。因此,函数内的任何局部变量都位于堆栈中。 堆-这是程序的未使用内存,可用于在程序运行时动态分配内存。因此,如果我们希望某些东西的寿命比声明它的函数的寿命更长,则必须在堆上分配它。 示例 堆内存中的主要问题是碎片,而堆栈中更容易出

  • 我试图运行一个. jar文件,这是在Netbean中成功创建的,我收到以下错误: 初始化VM java时出错。lang.错误:Properties init:无法确定当前工作目录。在爪哇。lang.System。java上的initProperties(本机方法)。lang.System。initializeSystemClass(System.java:1070) 我键入以运行的命令。罐子是 我

  • 假设我有以下层次结构: 1级活动(例如主菜单) 2级活动(如日历) 3级活动(如日历日) 存在以下用例: 深入人心 需要以下过渡行为: 用例1 3:我希望旧活动从左侧滑出,新活动从右侧滑入 用例2:我希望旧活动滑出到右侧,新活动滑入到左侧 我尝试了很多方法来使用来实现这一点,但没有一个组合可以正常工作...我被以下内容卡住了: 动画(这些应该正常工作): SlideFromLeftIn: Slid