如何在 SmartOS 上使用 HotSpot DTrace 探针?

2024-01-03

在 Mac OS X 上,我可以通过运行以下命令找到运行 Java 程序的 HotSpot 探针:

cody.mello@ashur ~ (1) % sudo dtrace -ln 'hotspot*:::'
Password:
Invalid connection: com.apple.coresymbolicationd
   ID   PROVIDER            MODULE                          FUNCTION NAME
165084  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-clinit
165085  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-concurrent
165086  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-end
165087  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-erroneous
165088  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-error
165089  hotspot46      libjvm.dylib _ZN13instanceKlass15initialize_implE19instanceKlassHandleP6Thread [instanceKlass::initialize_impl(instanceKlassHandle, Thread*)] class-initialization-recursive
...

但是如果我创建一个简单的 Java 程序并在 SmartOS 上运行它:

cody@101901c9-6d66-ea32-fe42-f1fbebd4bf99 ~ % cat Loop.java 
class Loop {

    public static void main(String[] args) throws InterruptedException {
        while (true) {
                Thread.sleep(5000);
        }
    }
}
cody@101901c9-6d66-ea32-fe42-f1fbebd4bf99 ~ % javac Loop.java 
cody@101901c9-6d66-ea32-fe42-f1fbebd4bf99 ~ % java Loop

我找不到任何探测器:

cody@101901c9-6d66-ea32-fe42-f1fbebd4bf99 ~ (255) % pfexec dtrace -ln 'hotspot*:::'
   ID   PROVIDER            MODULE                          FUNCTION NAME
dtrace: failed to match hotspot*:::: No probe matches description

我需要做什么特别的事情才能见到他们吗?


这里的问题是,在 SmartOS(以及其他 illumos 变体——以及它们专有的 Solaris 同类)上,JVM 中的 DTrace 模块是延迟加载(也就是说,DOF 是用-x lazyload)。因此,在显式启用之前不会加载 DTrace 探针。有两种方法可以解决这个问题。第一个是您可以告诉 DTrace 本身启用有问题的特定探测器,强制目标进程加载其探测器。这需要(至少)目标进程的ID;为了在问题中提供的示例中表达这一点,它将类似于:

% pfexec dtrace -ln 'hotspot*$target:::' -p `pgrep -fn "java Loop"`

这将拾取hotspot (and hotspot_jni) USDT 探针,但仍然使用jstack()在充满毫无戒心的 Java 进程的机器上执行此操作很困难。 (也就是说,当您想要在已知进程上使用 USDT 探针时,这才有效,而不是当您想要使用 ustack 帮助程序分析所有 Java 进程时。)如果这是您关心的问题,在 illumos 变体(SmartOS、 OmniOS 等),您可以通过使用审计库专为该任务而设计。这个图书馆——/usr/lib/dtrace/libdtrace_forceload.so及其 64 位变体,/usr/lib/dtrace/64/libdtrace_forceload.so-- 将有效地强制在进程启动时加载 DTrace 探针,为您提供 USDT 探针和jstack()对所有此类流程采取行动。要对 32 位 JVM 执行此操作,请启动javaLD_AUDIT_32环境变量设置:

export LD_AUDIT_32=/usr/lib/dtrace/libdtrace_forceload.so

对于 64 位 JVM:

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

如何在 SmartOS 上使用 HotSpot DTrace 探针? 的相关文章

  • 具有默认值的 Java JAX-RS 自定义参数

    假设我有这个 这只是一个示例 GET Path value address Produces application json public Response getAddress QueryParam user User user 用户是
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • 防止 Spring Boot 注册 Spring Security 过滤器之一

    我想禁用安全链中的 Spring Security 过滤器之一 我已经看到了防止 Spring Boot 注册 servlet 过滤器 https stackoverflow com questions 28421966 prevent s
  • URL.setURLStreamHandlerFactory

    我正在使用带有嵌入式 Jetty 的可执行 jar 开发一个 Web 应用程序 我的jar包含一个依赖jar jar in jar 我参考了JarRsrcLoader and RsrcURLStreamHandlerFactory由 Ecl
  • 在哪里可以获得有关 Java FitNesse 和 Slim 的一些教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Junit maven构建错误(maven-surefire-plugin:2.19.1:测试失败:分叉进程中出现错误)[重复]

    这个问题在这里已经有答案了 我通过引用创建了一个示例 struts 2 项目和 J unit 测试用例link http self learning java tutorial blogspot com au 2015 04 struts2
  • 如何在远程 WebSphere 上进行 JNDI 查找期间解决 sun/io/MalformedInputException

    我使用 WebSphere 8 5 来托管我的应用程序 并在应用程序服务器上配置了一些 JDBC 资源 我还使用瘦客户端运行时库开发了一个客户端应用程序 当按以下方式执行 JNDI 查找时 env put Context INITIAL C
  • Spring3/Hibernate3/TestNG:有些测试给出 LazyInitializationException,有些则没有

    前言 我在单元测试中遇到了 LazyInitializationException 的问题 而且我很难理解它 正如你从我的问题中看到的那样Spring 中的数据库会话 https stackoverflow com questions 13
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • 如何在 Eclipse 中使用其他外部 jar 依赖项创建不可运行/不可执行的 jar

    我无法通过 Eclipse 导出向导创建普通的 jar 不可运行 不可执行 它仅创建 jar 文件 但不会导出依赖的 jar 从而在从其他类调用导出的 jar 的方法时出现错误 请帮助 非常感谢 kurellajunior的建议 它是通过使
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • Java:java.util.ConcurrentModificationException

    我正在制作 2D 目前正在研究用子弹射击 子弹是一个单独的类 所有项目符号都存储在称为项目符号的数组列表中 当它超出屏幕一侧 Exception in thread main java util ConcurrentModification
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 为什么范围为“provided”的依赖项会隐藏 Maven 中的传递依赖项?

    我的 Maven 项目中有三个模块 这稍微简化了 model包含JPA注释的实体类 坚持实例化一个实体管理器并调用它的方法 应用创建类的实例model 设置一些值并将它们传递给坚持 model and 坚持显然取决于javax persis
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • 按钮 onclick 函数触发两次

    我有一个使用事件处理程序调用 JavaScript 函数的按钮 由于某种原因 事件处理程序被调用两次 这是我的按钮 我使用 php 对象来生成代码 这就是为什么有很多空标签的原因
  • 在运行时使用 makefile 复制文件

    我曾经在 Windows 上使用批处理脚本来编译程序 但最近我发现 makefile 效率更高 我的里面有这条线 bat复制一些dll的文件to运行时的当前目录并且运行良好 copy C lib glfw glfw dll 我在我的 mak
  • 如何获得CRC64分布式计算(利用其线性特性)?

    我需要对存储在分布式文件系统上的相当大的文件进行哈希处理 我能够以比整个文件更好的性能处理文件的某些部分 因此我希望能够计算各部分的哈希值 然后对其求和 我在想CRC64作为哈希算法 但我不知道如何使用其理论上的 线性函数 属性 以便我可以
  • Windows 10 (UWP) 编码 UI

    Visual Studio 2015 中没有适用于 UWP 的编码 UI 项目 而且我在任何地方都找不到任何说明有计划提供支持的文档 有谁知道是否有计划支持它或有一些替代的 UI 测试框架与 Windows Universal 一起使用 我
  • IIS 无法为用户访问 Excel 文件,但对我来说没问题。为什么?

    我有一个程序在 Windows Server 2008 R2 的 IIS 中作为服务运行 该程序在 Excel 中创建报告没有问题 当它尝试访问刚刚创建的 Excel 时 就会出现问题 这会在这行代码处向用户提供 80070005 错误 E
  • React with TypeScript - 如何导入方法

    在 React with TypeScript 中 我收集您使用以下命令导入import as React from react 如果我想使用useState and Fragment例如 我知道我可以使用React useState an
  • 如何在不使用reverse=True参数的情况下对字符串列表进行逆序排序?

    我想以相反的顺序对字符串列表进行排序 例如 my list aaa bbb ccc 预期结果 ccc bbb aaa 我不想使用sorted my list reverse True 因为在更复杂的情况下 当按两个值进行过滤时 它不起作用
  • iOS Swift - 如何使用核心数据存储数组?

    我是 iOS 开发新手 想知道应该指定哪种数据类型来存储多个字符串 数组 该应用程序与食物有关 我需要将多种成分存储为一个属性 我正在考虑将成分作为实体 但我只是想让初学者变得容易 我读过有关可转换类型的内容 但人们似乎不建议使用它来存储数
  • 如何在React中更改MUI Datepicker输入框的高度

  • 测试 ClickOnce 应用程序

    您将使用什么方法在多个用户中测试 ClickOnce 应用程序的新版本 与当前版本并排 是否有任何最佳实践 特别是当应用程序依赖于不同服务器来实现 SQL Web 服务等的实时 测试版本时 我们使用内部 DNS 来设置http applic
  • 学习 Haskell 是为了学习 Scala

    我读过一些问题 例如 Scala vs Haskell 讨论两种语言的优点或学习哪种语言 但我已经知道我想学习 Scala 我在大学时是一名Java程序员 现在主要使用PHP 我想学习 Scala 因为它看起来像是个人项目中 Java 的改
  • 抑制 VSCode 中的 ESLint 警告

    我正在使用 ESLint扩大 https marketplace visualstudio com items itemName dbaeumer vscode eslint在 VSCode 中格式化并检查我的 JavaScript 代码
  • 将我的应用程序添加到 tvOS 应用程序设置屏幕

    How do you add app settings to tvOS like you do in iOS I assume that just like iOS the screen below you can add the sett
  • 当滚动离开视图 android 时,项目动画在 recyclerview 中停止

    我有一个 Recyclerview 我正在为单个列表项内的视图设置动画 但是当我滚动 recyclerview 时 动画停止 这是因为 recyclerview 会从其视图中删除项目 因此当我们向后滚动时 它会将其取回 但现在我希望该动画继
  • 垂直对齐字体很棒的图标与
  • 内的文本
  • 我有一个使用很棒的字体的列表 因此它的类是fa ul ul class fa ul li class dept i class fa li fa fa stop i span Management span li li class dept
  • 在Linux中,为什么所有进程都有一个全局的/dev/stdin文件?

    不同进程的标准输入不应该是唯一的吗 如果是这样 标准输入文件的路径不应该是这样的 dev pid stdin而不是全局的 dev stdin 有人对此有想法吗 dev stdin是独一无二的 因为 它是一个符号链接 proc self fd
  • MFMessageComposeViewController 不工作

    我有一种简单的方法 可以获取一个参数 然后发送一条消息 它不起作用 Code void sendSMS NSString text MFMessageComposeViewController viewController MFMessag
  • 用于 Web 应用程序的 GetEntryAssembly

    Assembly GetEntryAssembly 不适用于网络应用程序 但是 我真的需要这样的东西 我使用一些在 Web 和非 Web 应用程序中使用的深度嵌套代码 我当前的解决方案是浏览 StackTrace 以查找第一个调用的程序集
  • 在 SQLite 数据库中存储 XML/HTML 文件 - 可能吗?

    是否可以直接将 XML HTML 文件存储在 SQLite 数据库中 我正在用 python 编写一个程序 该程序应该解析 XML HTML 文件并将值存储在数据库中 然而 XML HTML 文件中的字段可能会有所不同 我认为将整个 XML
  • 如何在 SmartOS 上使用 HotSpot DTrace 探针?

    在 Mac OS X 上 我可以通过运行以下命令找到运行 Java 程序的 HotSpot 探针 cody mello ashur 1 sudo dtrace ln hotspot Password Invalid connection c