问题标签 [instrumentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2053 浏览

java - 如何检测 java 系统类?

我正在尝试将自定义行为添加到系统类(FileInputStream/FileOutputStream)。我使用以下转换方法编写了自定义 ClassFileTransformer:

当我运行示例程序时:

我看到没有系统类没有传递给转换。

有没有办法修改系统类?提前致谢!

0 投票
2 回答
2428 浏览

python - 动态二进制检测框架 PIN 的 Python 接口

我使用 Python 分析二进制文件。我一直在使用调试器进行动态分析(即运行应用程序并使用断点来获取运行时执行)。但是,如果我可以使用一些像PIN这样的二进制仪器框架,结果可以得到改善。PIN 是用 C++ 开发的,并作为封闭源代码(仅限 dll)提供。我们编写了一个叫做 PinTools 的东西来描述我们想要拦截的位置和内容。我想将 PIN 功能移植到 Python 中,以便继续使用 Python。我知道“ctypes”和 boost-python。

我的问题是:为了使用 PIN,我们编写了一个 pintool 并使用 Pin 和 pintool 运行我们的二进制可执行文件(就像使用 JIT 运行应用程序一样)。现在,我不知道是否可以使用 ctypes 等来导入 PIN 函数并使用此 python 代码动态分析二进制文件。您能否就如何进行此任务提供一些建议或指导。

因此,在 nut-n-shell 中,我想为 PIN 框架创建一个 Python 接口(包装器)。

0 投票
1 回答
1594 浏览

unit-testing - What is the purpose of Instrument assemblies in place in VS2010?

In visual studio 2010 under the test settings < data and diagnostics tab < configuration for Code Coverage you can choose whether to instrument assemblies in place when you select which assemblies you wish to apply code coverage analysis to.

By default instrument assemblies in place is checked, however when it is checked anytime I run my unit tests I will be told there is no code coverage xml file being generated. If I choose to not instrument assemblies in place it works fine.

What gives?

0 投票
1 回答
962 浏览

java - 使用 java asm 库检测“导入”

我正在使用 asm 库进行 java 检测,我想检测“导入”指令。这样通过使用 visitMethodInsn 和 INVOKEVIRTUAL 我就可以从我的包中调用一个函数。我知道当我有一个字节码时,链接阶段就结束了,所以我这样做可能会遇到麻烦。任何解决方案/绕路?

0 投票
2 回答
2155 浏览

java - 从检测方法调用自己的类时出现 Java NoClassDefFoundError

我正在开发一套简单的 Java 代理来帮助我(希望其他人)对 Java 应用程序进行故障排除。我想创建的代理之一是 JComponent.getToolTipText() 方法,只需将鼠标光标悬停在它上面即可快速识别任何 GUI 类。

你可以在这里找到我的转换器的代码和项目的其余部分:

http://sfn.cvs.sourceforge.net/viewvc/sfn/core/src/main/java/org/leplus/sfn/transformer/JComponentTransformer.java?view=markup

我启动我的测试 GUI 并附加如下代理:

sfn-0.1-agent.jar 包含 org.leplus.sfn.transformer.JComponentTransformer 类。sfn-0.1-test.jar 包含 org.leplus.sfn.test.Main 类。

这是应用程序在我启动它并将鼠标放在它上面时打印的内容:

令我惊讶的是,如果我将转换器更改为从 JRE 调用任何类,它就可以工作。但是当我调用我自己的类 org.leplus.sfn.tracer.ComponentTracer 时它不起作用。我的第一个猜测是类路径问题,但 ComponentTracer 既在类路径中,也在代理的 jar 中。所以我迷路了。

如果你们中的任何人看到我遗漏了什么。

干杯,

汤姆

0 投票
1 回答
646 浏览

java - Java 代理、检测和数组创建

我需要为我的 java 应用程序编写一个代理,它在每次创建数组时都会做一些特定的事情。到目前为止,我无法找到在此事件上运行我的代码的任何方法。

  1. java.lang.instrument.ClassFileTransformer 没有得到“数组类”,因此无法挂钩到“数组的构造函数”。并且“数组类永远不可修改”
  2. 没有 JVMTI 事件对应于此

有什么建议么?

0 投票
1 回答
4524 浏览

android - 模拟硬件按键事件的方法

我有InputMethod一个习惯BroadcastListener。当侦听器在onReceive()方法中捕捉到意图时,我调用onKeymy 的方法,InputMethod并以这种方式模拟来自软键盘的按键。如果我打电话onKeyDown或者onKeyUp然后我模拟硬件键盘。所以这是我不喜欢的解决方案。

昨天我发现了这个: http: //mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html

使用模拟按键是一个好主意Instrumentation.sendKeyDownUpSync并且它工作得很好,我什至不需要实现我自己的InputMethod. 我的意思是,据我所知,此仪器是为测试目的而提供的。

以我的方式使用是个好主意吗?

0 投票
3 回答
1173 浏览

java - 为什么这个简单的 Java 字节码会导致 StackOverflow 错误?

在正常执行之前,我需要检测本机方法以进行简单的静态调用。因为这些方法是原生的,所以我必须使用“setNativePrefix”功能,并使用带有原始方法签名的中间调用来包装原生方法。

在我认为是一个简单的字节码更改来完成此操作之后,即使堆栈基本上是空的,我也会在包装方法执行之前得到一个 StackOverflowError 。这是我的测试课:

通常,该程序不会在控制台上产生任何结果。但是,我的检测字节码在执行本机方法 $wrapper$highResCounter() 之前执行 println()。这可以在检测后的相关 Perf 类字节码中看到:

我对 Java 字节码有点陌生,所以我可能在这里犯了一个错误。这是程序的输出,它显示 println() 被执行,但是在第一次 invokevirtual调用之后的某个地方抛出了 StackOverflowError:

什么可能导致此 StackOverflowError?我该如何解决?

0 投票
3 回答
9477 浏览

visual-studio-2010 - Microsoft 代码覆盖率工具可以生成 XML 文件作为报告格式吗?

Microsoft 代码覆盖率工具 (vsinstr.exe) 生成要在 Visual Studio 中读取的二进制文件。它还可以生成 XML 文件吗?

0 投票
3 回答
2015 浏览

c++ - 停止通过 stl 容器调用重载的 new 和 delete 运算符

我正在开发一个内存泄漏工具。在这个我重载 new 和 delete 运算符。它工作正常。但是我创建这个工具的代码大约是 15000 行。我无法更改现有代码,只有我可以将 memoryleak 工具功能调用到现有代码中。具有 stl 容器的现有代码(如列表、地图、堆栈等)。Stl 容器还调用 new 和 delete 运算符来分配或释放内存。我希望 stl 容器应该调用不在重载的 new 和 delete 中的 new 和 delete 运算符。例如:

我该怎么做?任何帮助将不胜感激。

对不起,我忘了提到我正在用以下宏替换 new 和 delete:

这里 TrackMemory 用于跟踪内存,new 用于分配内存,与 delete 相同。我的工具也可以正常工作,但是当 stl 容器进入图片时,它会给出错误的结果,因为它们只使用重载的新容器。请帮帮我