問題タブ [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.
java - Javaシステムクラスを計測する方法は?
システム クラス (FileInputStream/FileOutputStream) にカスタム動作を追加しようとしています。次の変換メソッドを使用して、カスタム ClassFileTransformer を作成しました。
サンプルプログラムを実行すると:
システム クラスがトランスフォームに渡されていないことがわかります。
システムクラスを変更する方法はありますか? 前もって感謝します!
python - 動的バイナリ インストルメンテーション フレームワーク PIN への Python インターフェイス
Python を使用して、バイナリ ファイルの分析に取り組んでいます。私はデバッガーを使用して動的分析を行っています (つまり、アプリケーションを実行し、ブレークポイントを使用してランタイム実行を取得します)。ただし、 PINなどのバイナリ インストルメンテーション フレームワークを使用できれば、結果を改善できます。PIN は C++ で開発され、クローズド ソース (dll のみ) として提供されます。PinTools と呼ばれるものを作成し、インターセプトする場所と対象を記述します。Python を引き続き使用できるように、PIN 機能を Python に移植したいと考えています。「ctypes」とboost-pythonを認識しています。
私の問題は、PIN を使用するために、pintool を作成し、Pin と pintool を使用してバイナリ実行可能ファイルを実行することです (JIT を使用してアプリケーションを実行するようなものです)。さて、ctypesなどを使用してPIN関数をインポートし、このpythonコードを使用してバイナリを動的に分析できるかどうかはわかりません。このタスクの進め方について、提案やガイドラインを教えてください。
そこで、基本的に、PIN フレームワークへの Python インターフェイス (ラッパー) を作成したいと思います。
unit-testing - VS2010で導入されている機器アセンブリの目的は何ですか?
Visual Studio 2010では、テスト設定<[データと診断]タブ<コードカバレッジの構成で、コードカバレッジ分析を適用するアセンブリを選択するときに、アセンブリを適切にインストルメント化するかどうかを選択できます。
デフォルトでは、適切なインストルメントアセンブリがチェックされますが、単体テストを実行するたびにチェックされると、コードカバレッジxmlファイルが生成されていないことが通知されます。アセンブリを所定の位置に計測しないことを選択した場合、正常に機能します。
何が得られますか?
java - javaasmライブラリを使用して「インポート」をインストルメント化する
Javaインストルメンテーションにasmライブラリを使用していて、「インポート」命令をインストルメントしたいと思います。これにより、visitMethodInsnとINVOKEVIRTUALを使用して、パッケージから関数を呼び出すことができます。バイトコードがあるとリンケージステージが終了するので、問題が発生する可能性があることを認識しています。解決策/迂回はありますか?
java - インストルメントされたメソッドから独自のクラスを呼び出すときのJavaNoClassDefFoundError
私は、Javaアプリケーションのトラブルシューティングを支援するための単純なJavaエージェントのキットに取り組んでいます。インストルメントを作成したいエージェントの1つであるJComponent.getToolTipText()メソッドは、マウスカーソルをその上に置くだけでGUIクラスをすばやく識別します。
私のトランスフォーマーとプロジェクトの残りのコードはここにあります:
次のようにエージェントを接続してテスト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の両方にあります。だから私は迷子になります。
誰かが私が何かを逃しているところを見たら。
乾杯、
トム
java - Java エージェント、インストルメンテーション、アレイの作成
配列の作成ごとに特定の処理を行う Java アプリケーション用のエージェントを作成する必要があります。これまでのところ、このイベントでコードを実行する方法を見つけることができませんでした。
- java.lang.instrument.ClassFileTransformer は「配列クラス」を取得しないため、「配列のコンストラクター」にフックする方法はありません。そして「配列クラスは決して変更できません」
- これに対応する JVMTI イベントはありません
助言がありますか?
android - ハードウェア キー プレス イベントをシミュレートする方法
という風習InputMethod
がありBroadcastListener
ます。リスナーがメソッドでインテントをキャッチすると、myonReceive()
のメソッドを呼び出し、その方法でソフトキーボードからのキーの押下をシミュレートします。またはを呼び出すと、ハードウェア キーボードをシミュレートします。したがって、これは私が気に入らない解決策です。onKey
InputMethod
onKeyDown
onKeyUp
昨日、私はこれを見つけました: http://mylifewithandroid.blogspot.com/2009/01/generating-keypresses-programmatically.html
キープレスをシミュレートするために使用するのは良い考えですかInstrumentation.sendKeyDownUpSync
、それは完全に機能しています。独自の を実装する必要さえありませんInputMethod
。私が理解しているように、このインストルメンテーションはテスト目的で提供されていることを意味します。
私のように使われるのは良い考えですか?
java - この単純な Java バイトコードが StackOverflow エラーを引き起こすのはなぜですか?
通常どおり実行する前に、単純な静的呼び出しを行うネイティブ メソッドをインストルメント化する必要があります。メソッドはネイティブであるため、「setNativePrefix」機能を使用して、元のメソッド シグネチャを使用した中間呼び出しでネイティブ メソッドをラップする必要があります。
これを達成するための単純なバイトコードの変更だと思った後、スタックが基本的に空であっても、ラッパーメソッドが実行される直前に StackOverflowError を取得しています。ここに私のテストクラスがあります:
通常、そのプログラムはコンソールに何も表示しません。ただし、インストルメント化されたバイトコードは、ネイティブ メソッド $wrapper$highResCounter() を実行する前に println() を実行します。これは、計測後の関連する Perf クラスのバイトコードで確認できます。
私は Java バイトコードに慣れていないので、ここで間違いを犯した可能性があります。これはプログラムの出力で、println() が実行されることを示していますが、最初の invokevirtual呼び出しの後のどこかで StackOverflowError がスローされます。
この StackOverflowError の原因は何ですか? どうすれば修正できますか?
visual-studio-2010 - Microsoft コード カバレッジ ツールはレポート形式として XML ファイルを生成できますか?
Microsoft コード カバレッジ ツール (vsinstr.exe) は、Visual Studio で読み取るバイナリ ファイルを生成します。XMLファイルも生成できますか?
c++ - stl コンテナーによるオーバーロードされた new および delete 演算子の呼び出しを停止する
私はメモリリークツールを開発しています。これで、新しい演算子と削除演算子をオーバーロードしています。その正常に動作します。しかし、このツールを作成しているコードは約 15000 行です。既存のコードを変更することはできませんが、メモリリーク ツール関数を既存のコードに呼び出すことができます。stl コンテナー (リスト、マップ、スタックなど) を持つ既存のコード。Stl コンテナーは、new および delete 演算子も呼び出して、メモリの割り当てまたは割り当て解除を行います。stl コンテナが、オーバーロードされた new および delete ではない new および delete 演算子を呼び出す必要があることを望みます。例:
どうすればできますか?どんな助けでも感謝します。
申し訳ありませんが、new と delete を次のマクロに置き換えていることを忘れていました。
ここで、TrackMemory はメモリを追跡するために使用され、new は delete と同じようにメモリを割り当てるために使用されます。私のツールも正常に動作しますが、stl コンテナーが表示されると、オーバーロードされた new のみを使用するため、間違った結果が得られます。私を助けてください