Как я могу поделиться кодом Javascript между файлами в предварительном просмотре Windbg?

1

Как поделиться кодом Javascript между файлами в предварительном просмотре Windbg?

Сейчас у меня есть несколько вспомогательных методов, которые я скопировал и вложил в разные файлы javascript. Я не так много разбираюсь в javascript, поэтому извиняюсь, если это глупый вопрос.

В качестве примера предположим, что я хочу использовать эту функцию в нескольких файлах:

function GetGuid( objectPtr )
{
    return ExecuteCommandToString( "dt nt!_GUID " + objectPtr )
    .FindLineContaining("{").trim().replace("{", "").replace("}","");
}
  • 0
    Это работает? stackoverflow.com/questions/950087/...
  • 0
    @ThomasWeller jsprovider не поддерживает импорт / экспорт.
Теги:
windbg

1 ответ

1

У меня есть common.js, который имеет несколько функций, которые обычно можно использовать повторно, например host.diagnostics.debugLog()

Я сначала загружаю его, используя.scriptload

то в других js файлах я создаю var для этих функций и использую его

посмотрите, помогает ли это

содержимое общего файла функции

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);
}

файл js с использованием функции из common.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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню