WinDbgの別のスクリプトで定義されたJavaScript関数を参照するにはどうすればよいですか?

モジョ

関数を格納するためのJavaScriptスクリプトがいくつかあります(モジュール性と再利用のため)。実行しているwindbgスクリプトから両方をロードします。一方のスクリプト内から、もう一方のスクリプトで定義された関数を呼び出すにはどうすればよいですか?

このエンジンは、ブラウザで採用されているインポート/エクスポート機能をサポートしていないようです

デバッガスクリプト内から、@$scriptContentsJavaScript関数にアクセスするために使用する必要があります。JavaScript関数の1つから同様のことを実行するにはどうすればよいですか?

実験

すべてのJavaScript関数に何らかのグローバル名前空間があることを期待していましたが、そうではないようです。

検討する

// t1.js
function func1() {
    host.diagnostics.debugLog('func1()...\n');
}

そして

// t2.js
function func2() {
    host.diagnostics.debugLog('func2()...\n');
    func1();
}

私のcdbセッションで

0:000> .load jsprovider.dll
0:000> .scriptload t1.js
JavaScript script successfully loaded from 't1.js'
0:000> .scriptload t2.js
JavaScript script successfully loaded from 't2.js'
0:000> dx @$scriptContents.func1()
func1()...
@$scriptContents.func1()
0:000> dx @$scriptContents.func2()
func2()...
Error: 'func1' is not defined [at t2 (line 3 col 5)]

編集

パーモーゼRaguzzini @さんのコメントとこの答え、私は参照『外来』の機能にはいくつかの方法を探して行ってきました。私は最終的にこれを発掘しました

host.namespace.Debugger.State.DebuggerVariables.scriptContents

すべての機能のコンテナとして。これはどこかに文書化されていますか?そこにたどり着く簡単な方法はありませんか?(そのオブジェクトに短い変数を割り当てることができることに気付きました。これが非常に単純な正面玄関のあるものへの裏口であるのではないかと疑っていますが、正面玄関がどこにあるのかわかりません。)

モーゼスラグッツィーニ

AFAIKすべてのスクリプトはグローバルスコープにインポートされるため、すべてが読み込まれると、単一のファイルに書き込まれるように動作できます。

例(回答をブラブするためのREF

common.jsには、host.diagnostics.debugLog()のように通常は再利用可能な関数がいくつかあります。

まず、.scriptloadを使用してロードします

次に、他のjsファイルでそれらの関数の変数を作成して使用します

共通機能ファイルの内容

C:\>cat c:\wdscr\common.js
function log(instr) {
    host.diagnostics.debugLog(instr + "\n");
}
function exec (cmdstr){
    return host.namespace.Debugger.Utility.Control.ExecuteCommand(cmdstr);
}

common.jsの関数を使用したjsファイル

C:\>cat c:\wdscr\usecommon.js
function foo(){
    var commonlog = host.namespace.Debugger.State.Scripts.common.Contents.log
    var commonexec = host.namespace.Debugger.State.Scripts.common.Contents.exec
    commonlog("we are using the logging function from the common.js file")

    var blah = commonexec("lma @$exentry")
    for(var a of blah) {
        commonlog(a)
    }
}

実際の使用法

C:\>cdb calc
Microsoft (R) Windows Debugger Version 10.0.16299.15 X86

0:000> .load jsprovider

0:000> .scriptload c:\wdscr\common.js
JavaScript script successfully loaded from 'c:\wdscr\common.js'

0:000> .scriptload c:\wdscr\usecommon.js
JavaScript script successfully loaded from 'c:\wdscr\usecommon.js'

0:000> dx @$scriptContents.foo()

we are using the logging function from the common.js file 
start    end        module name
00f10000 00fd0000   calc       (deferred)
@$scriptContents.foo()
0:000>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

kotlinのコンストラクターで定義されているxmlから関数を参照するにはどうすればよいですか?

分類Dev

別の関数内で定義された関数をウィンドウスコープに含めるにはどうすればよいですか?

分類Dev

Javascriptで、関数内で呼び出されたが他の場所で定義された関数から関数スコープの変数を参照するにはどうすればよいですか?

分類Dev

ある関数で定義および宣言された配列に別の関数でアクセスするにはどうすればよいですか?

分類Dev

CmdletBinding()スクリプト内で関数を定義するにはどうすればよいですか?

分類Dev

postgresqlでCOMPLETE関数定義スクリプトを取得するにはどうすればよいですか?

分類Dev

WebStormのJSHintの別のファイルで定義された変数のスコープを設定するにはどうすればよいですか?

分類Dev

Rで定義されたS4クラスの関数 `match`と`%in% `の動作を定義するにはどうすればよいですか?

分類Dev

Python / Djangoの「エクスポート」関数で以前に定義されたメソッド(funcs)を使用するにはどうすればよいですか?

分類Dev

別のスクリプトが終了した後に実行するJavaScript関数を呼び出すにはどうすればよいですか?

分類Dev

TreeNodes aとbで定義された2つのツリーを比較する関数をJavaScriptで作成するにはどうすればよいですか?

分類Dev

ある関数から別の関数でローカルに定義された変数を使用するにはどうすればよいですか?

分類Dev

別のモジュールで定義された関数にマクロ属性を適用するにはどうすればよいですか?

分類Dev

Gradleスクリプトで定義されたフィールドを参照するにはどうすればよいですか?

分類Dev

定義された順序でクラス変数のリストを取得するにはどうすればよいですか?

分類Dev

phpクラス内で定義された変数の値を別のページで使用するにはどうすればよいですか

分類Dev

Makefile内で定義されたPythonスクリプトにstdinの入力を送信するにはどうすればよいですか?

分類Dev

(Entry.get())として定義された変数をある関数から別の関数に渡すにはどうすればよいですか?

分類Dev

Chrome拡張機能:コンテンツスクリプトで定義された関数にアクセスするためのWebページを取得するにはどうすればよいですか?

分類Dev

スクリプト(.proj)でビルド定義に設定されたMSBuild引数を使用するにはどうすればよいですか?

分類Dev

別の関数を出力する関数を定義するにはどうすればよいですか?

分類Dev

別の関数でオブジェクトを参照するにはどうすればよいですか?

分類Dev

スクリプトで定義されたタイプのメンバーにアクセスするにはどうすればよいですか?

分類Dev

emacs-lispファイルで定義されている関数のリストを取得するにはどうすればよいですか?

分類Dev

完全に特殊化されたテンプレートクラスの定義の外でテンプレートメンバー関数を定義するにはどうすればよいですか?

分類Dev

完全に特殊化されたテンプレートクラスの定義の外でテンプレートメンバー関数を定義するにはどうすればよいですか?

分類Dev

両方のクラスの外部のテンプレートクラスの内部の非テンプレートクラスで宣言されたフレンド関数を定義するにはどうすればよいですか?

分類Dev

Pythonのクラス内の関数のすべての反復で使用される変数を定義するにはどうすればよいですか?

分類Dev

非同期関数の同期スコープで定義された変数を割り当てるにはどうすればよいですか?

Related 関連記事

  1. 1

    kotlinのコンストラクターで定義されているxmlから関数を参照するにはどうすればよいですか?

  2. 2

    別の関数内で定義された関数をウィンドウスコープに含めるにはどうすればよいですか?

  3. 3

    Javascriptで、関数内で呼び出されたが他の場所で定義された関数から関数スコープの変数を参照するにはどうすればよいですか?

  4. 4

    ある関数で定義および宣言された配列に別の関数でアクセスするにはどうすればよいですか?

  5. 5

    CmdletBinding()スクリプト内で関数を定義するにはどうすればよいですか?

  6. 6

    postgresqlでCOMPLETE関数定義スクリプトを取得するにはどうすればよいですか?

  7. 7

    WebStormのJSHintの別のファイルで定義された変数のスコープを設定するにはどうすればよいですか?

  8. 8

    Rで定義されたS4クラスの関数 `match`と`%in% `の動作を定義するにはどうすればよいですか?

  9. 9

    Python / Djangoの「エクスポート」関数で以前に定義されたメソッド(funcs)を使用するにはどうすればよいですか?

  10. 10

    別のスクリプトが終了した後に実行するJavaScript関数を呼び出すにはどうすればよいですか?

  11. 11

    TreeNodes aとbで定義された2つのツリーを比較する関数をJavaScriptで作成するにはどうすればよいですか?

  12. 12

    ある関数から別の関数でローカルに定義された変数を使用するにはどうすればよいですか?

  13. 13

    別のモジュールで定義された関数にマクロ属性を適用するにはどうすればよいですか?

  14. 14

    Gradleスクリプトで定義されたフィールドを参照するにはどうすればよいですか?

  15. 15

    定義された順序でクラス変数のリストを取得するにはどうすればよいですか?

  16. 16

    phpクラス内で定義された変数の値を別のページで使用するにはどうすればよいですか

  17. 17

    Makefile内で定義されたPythonスクリプトにstdinの入力を送信するにはどうすればよいですか?

  18. 18

    (Entry.get())として定義された変数をある関数から別の関数に渡すにはどうすればよいですか?

  19. 19

    Chrome拡張機能:コンテンツスクリプトで定義された関数にアクセスするためのWebページを取得するにはどうすればよいですか?

  20. 20

    スクリプト(.proj)でビルド定義に設定されたMSBuild引数を使用するにはどうすればよいですか?

  21. 21

    別の関数を出力する関数を定義するにはどうすればよいですか?

  22. 22

    別の関数でオブジェクトを参照するにはどうすればよいですか?

  23. 23

    スクリプトで定義されたタイプのメンバーにアクセスするにはどうすればよいですか?

  24. 24

    emacs-lispファイルで定義されている関数のリストを取得するにはどうすればよいですか?

  25. 25

    完全に特殊化されたテンプレートクラスの定義の外でテンプレートメンバー関数を定義するにはどうすればよいですか?

  26. 26

    完全に特殊化されたテンプレートクラスの定義の外でテンプレートメンバー関数を定義するにはどうすればよいですか?

  27. 27

    両方のクラスの外部のテンプレートクラスの内部の非テンプレートクラスで宣言されたフレンド関数を定義するにはどうすればよいですか?

  28. 28

    Pythonのクラス内の関数のすべての反復で使用される変数を定義するにはどうすればよいですか?

  29. 29

    非同期関数の同期スコープで定義された変数を割り当てるにはどうすればよいですか?

ホットタグ

アーカイブ