0

私の唯一の目的は、vTune を使用して Node.js で JavaScript コードのプロファイリングを行うことです。

この投稿の下に表示される手順に従おうとしました: vTune で Nodejs をプロファイリングしますが、運がありません。

Debian 7 x86_64 を使用しており、vTune Amplifier XE のバージョンは 2015 (評価モード) です。モジュールはservice sep3_15 start起動時にロードされ、 lsmod. また、jitprofilingvTune で提供されているサンプル プロジェクトをビルドすると、動作します (動的コンテンツが表示されます)。したがって、私の問題は、vTune をサポートする Node.js をビルドすることです。

上記の手順を実行し、 と で変更vcbuild.bat nosignする./configuremake、「../src/node.cc:22:67: 致命的なエラー: v8-vtune.h: そのようなファイルまたはディレクトリはありません」というエラーが表示され、正しくコンパイルし続ける唯一の解決策は、次の行も追加することですnode.gyp

  'include_dirs': [
    // ...
    'deps/v8/src/third_party/vtune',
    // ...

これは、インクルード ( v8-vtune.h) を取得してノードをコンパイルする唯一の方法です。

しかし、vTune Amplifier でインポートするとDynamic code、JS のソースもソースも表示されません。

./configure --buildとでデバッグ用のノードを構築し、 からではなく からバイナリを./configure --debug --gdb強制的に実行するなど、さまざまなことを試しました。vTune でプロファイリングするときに警告がスローされないため、シンボル定義 (リリース バージョンよりもはるかに大きい) があることがわかります。ノードのソース コードはすべて表示されますが、.nodeout/Debug/nodeout/Release/nodestrings node | wc -lDynamic code

gdbjit=on私は変数を強制しようとさえしましvtunejit=ondeps/v8/Makefile

私はナイトリー ビルド 0.11.11 と最新の 0.11.14 で試しました。

どうすればいいのかわかりません。

編集:さまざまなオプションを使用してより多くのコンパイルを行っていました(上記)。最後に、0.11.12 バージョンまではどのように動作するかを確認できますが、0.11.13 も 0.11.14 も動作しません。

4

1 に答える 1

1

node.js 0.11.13 をターゲットとする V8 での VTune サポートは、V8 での変更により壊れていました。最新の V8 バージョンで解決されました。node.js 0.11.13 の場合、手動で修正する必要があります。

  1. vTune を使用した Nodejs のプロファイリング の手順に従います。あなたはすでにそれを行っていると思います。
  2. 破損した VTune サポートを修正します。

[nodejs-v0.11.13]\deps\v8\include\v8.h ファイル: 置換

Handle<Script> script;

Handle<UnboundScript> script;

[nodejs-v0.11.13]\deps\v8\src\log.cc ファイル: "void JitLogger::LogRecordedBuffer(...)" 関数で、置き換えます

event.script = ToApiHandle<v8::UScript>(script_handle);

event.script = ToApiHandle<v8::UnboundScript>(script_handle);

[nodejs-v0.11.13]\deps\v8\src\third_party\vtune\vtune-jit.cc ファイル: "void VTUNEJITInterface::event_handler(const v8::JitCodeEvent* event)" 関数内、置換

Handle<Script> script = event->script;

Handle<UnboundScript> script = event->script;

それは役立つはずです。

于 2014-10-30T09:01:11.053 に答える