Java,如何跟踪调用的函数

2023-12-10

我想跟踪Java中调用的函数的开头[&结尾],如以下代码:

    public void foo() {
  System.out.println("begin of foo()");
  ...
  System.out.println("e-n-d of foo()");
 }

但维护转储代码System.out.println这是一件乏味且容易出错的事情,因为一个类中可能有数以万计的函数。

有什么好主意可以减轻这项工作吗?我不希望转储语句遍布整个文件。

优选实现开始和结束跟踪两者或其中之一。
但是,如果不可能的话,记录该函数被调用的情况也是有帮助的。我的意思是不关心确切的开始和结束,只需告诉该函数已被调用。


另一种方法是使用BTrace- 它有点类似于 AspectJ,但可以附加到正在运行的 java 应用程序并即时应用日志记录代码(它也可以从应用程序分离,删除所有注入的代码,但让应用程序像使用之前一样运行BTrace)

为了使用BTrace您将编写一个简单的跟踪脚本,其 POJO 注释为BTrace注释(以及有关可以使用哪些内容来避免目标应用程序崩溃的一些限制)。

在这种情况下,脚本将如下所示:

@BTrace public class FooTracer {
  @OnMethod(clazz="Bar", method="foo")
  public static void onEntry() {
    println("begin of foo()");
  }

  @OnMethod(clazz="Bar", method="foo", location=@Location(Kind.RETURN))
  public static void onExit() {
    println("end of foo");
  }
}

您还可以做很多事情BTrace- 只需参考用户指南和示例。名义上,它是控制台应用程序,但已集成到VisualVM创造与他人合作的经验BTrace更令人愉快。

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

Java,如何跟踪调用的函数 的相关文章

  • 使用 Intellij Idea 和 gradle 在应用程序引擎上调试 localhost

    我正在使用 IntelliJ 社区添加并使用 Gradle 构建应用程序引擎标准环境应用程序 在迁移到 IntelliJ 和端点框架之前 我使用的是 Android Studio 我无法调试我的本地主机 我添加了 jvmFlags 如下所述
  • Netbeans 8.1 Gnome 3 GTK+ UI 字体和选项卡高度

    我刚刚在运行 GNOME 3 桌面的 Ubuntu 16 04 上安装了 NetBeans 8 1 如果可能的话 我想继续使用 IDE 的 GTK 外观和感觉 但 UI 上的字体 尤其是选项卡中的字体 太小且重叠 我尝试添加 fontsiz
  • 有没有创建 Cron 表达式的 Java 代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个 Java 代码来根据用户输入创建一个 cron 表达式 用户输入是时间 频率和执行次数 只需从评论中添加 自己创建 即可
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • Javascript 函数不等待 AJAX 响应

    我有一个名为的 AJAX 函数flagIt 它是从另一个名为的函数中调用的validateForm validateForm 在提交时执行 function validateForm var error do stuff to valida
  • 如何避免 spring-boot-admin 中的证书验证?

    如何避免 spring boot admin 中的证书验证 链接错误图片 https ibb co fkZu8y 我配置 RestTemplate 以避免在类中使用证书 但我不知道如何发送它 我猜它必须在客户端中 spring boot a
  • python 刷新/重新加载

    这是一个非常基本的问题 但我无法通过在线搜索找到答案 我正在使用 python 来控制 ArcGIS 并且我有一个简单的 python 脚本 它调用一些预先编写的代码 但是 当我对预先编写的代码进行更改时 它似乎不会导致任何更改 我导入这个
  • 通过 USB 将文件从 PC 传输到 Android 设备

    我想以编程方式通过 USB 将文件从我的电脑的特定端口传输到 Android 设备 以下哪种技术最适合这种传输模式 Sockets HttpUrlConnection 如果可以通过HttpUrlConnection意思是如何实现这个 通过
  • JavaFX自动滚动自动更新文本

    关于 JavaFX 的新手问题 我无法回答 尽管我知道它一定非常简单 而且在我看过的任何地方都没有找到任何资源 教程 许多 Oracle 在线文档 文章 以及知名JavaFX博主等 我正在开发一个命令行 脚本 运行的应用程序 并且我已经成功
  • constexpr 静态数据成员给出未定义的引用错误

    我正在开发内核 我想创建我的静态数据成员constexpr所以我可以在一个enum class 但是 如果我这样做 我会收到未定义的参考错误 只有当我将其设置为非 constexpr 并在类之外对其进行初始化时 它似乎才起作用 Workin
  • 如何使用其他 webcontroller odoo 9.0 更改 odoo 的默认页面

    我创建了一个具有特定功能的新 Web 控制器 我希望将此 Web 控制器作为odoo 9 0 我试过把 http route type http auth public website True in main py我的自定义 webcon
  • 链接 LLVM 导致 gcov 失败

    Passing coverage到 gcc 同时链接 LLVM 会导致undefined reference to gcov exit 来自链接器的错误 我已经建立了一个新项目来尝试解决这个问题 你可以查看github上的源码 and 检查
  • Vue.Js - Firebase 函数不能在组件上使用

    我正在使用 Vue Resource 将数据从我的网络应用程序发布到 firebase 但是后来 我发现我需要使用 firebase 集成来上传 firebase 存储中的图像 所以我将它集成到我的 src main js 中 import
  • 在 Sublime Text 2 中显示所有可能的 CSS 值的包?

    通过基本的 Sublime Text 2 构建 我获得了 CSS 值自动完成功能only当我输入值的第一个字母时 如下图所示 不过 我一直在观看 Tuts HTML CSS 网络教程 这是一个示例视频 他的 Sublime Text 构建显
  • 将 MongoDB 查询转换为 Spring MongoDB 语法

    您好 我无法将以下 mongoDB 查询转换为 spring 查询 我尝试了多种方法 但没有得到结果 db getCollection FarmerCropDataLog aggregate match cropData crop RICE
  • JSDoc 中对象中任意键的值的文档结构

    我有一个函数factory function factory events for const key in events const before after events key 论点在哪里events通常是 only before a
  • 从 Java 将多个 PDF 作为单个打印作业打印(物理打印)

    我想在一个打印作业中从java 使用java打印服务 打印多个pdf 我想将多个 pdf 文件作为单个作业发送到打印机 这样 我的 批量 中的所有文档都会一起打印 并且当我从打印机中取出它们时 不会与其他人的打印作业交错 一个批次可能包含数
  • 如何使用 JavaFX TableView 显示基于列的数据集

    我正在尝试从 Swing 切换到 JavaFX 但 TableView 出现问题 我在内存中有一个基于列的通用数据结构 例如List
  • Apple 在 AppStore 中接受的最低 iOS 目标版本?

    我有一个应用程序 我希望在所有 iOS 版本上运行 但我认为 Apple 只接受某个版本及更高版本的应用程序 我认为是 3 0 但不确定 所以我的问题是 您可以发送审核 并获得接受 的最低 iOS 目标版本是多少 如果任何具有丰富 iOS
  • codeigniter 无法在实时页面上工作,在服务器上找不到错误

    我的 codeigniter 在本地主机上完美工作 但在 live 上无法工作 我的 codeigniter 是最新版本 我也尝试较旧的版本 它总是显示在重定向上找不到的页面 routes php 设置是 route default con
  • C++:构造和初始化顺序保证

    我对 C 中的构造和初始化顺序保证有一些疑问 例如 下面的代码有四个类X Y Z and W main函数实例化一个对象class X 其中包含一个对象class Y 并且源自class Z 因此两个构造函数都会被调用 此外 const c
  • 如何优化这些循环(禁用编译器优化)?

    我需要优化一些for在不使用编译器优化标志的情况下循环提高速度 用于学校作业 给定一个特定的Linux服务器 学校拥有的 一个令人满意的改进是使其运行时间低于7秒 一个很大的改进是使其运行时间低于5秒 我这里的这段代码大约需要 5 6 秒
  • 约束命名的目的是什么

    命名约束 唯一 主键 外键 的目的是什么 假设我有一个使用自然键作为主键的表 CREATE TABLE Order LoginName VARCHAR 50 NOT NULL ProductName VARCHAR 50 NOT NULL
  • Java,如何跟踪调用的函数

    我想跟踪Java中调用的函数的开头 结尾 如以下代码 public void foo System out println begin of foo System out println e n d of foo 但维护转储代码System