如何在 WinDbg 中配置 "script" 搜索路径?

How can I configure a "script" search path in WinDbg?

是否有脚本搜索路径?

我想在 WinDbg(好吧,真的是 CDB)中使用 JavaScript(通过 jsprovider.dll)。似乎我必须将我的脚本放在我从中启动调试器的目录中,或者在我调用调试器时包含脚本的完整路径。有其他选择吗?

这些我都试过了,都没有成功。 Javascript Debugger Scripting 文档点没有直接回答我的问题。

.scriptload 失败

.scriptload

Absolute or relative paths can be used. Relative paths are relative to the directory that you started the debugger in. File paths containing spaces are not supported.

它没有列出选项或备选方案。

我试过使用 "variables" 但没有成功。您可以在 "variable" 中存储非数字值吗?我有丑陋的尝试,我可以在这里 copy/paste,但我只是在猜测语法,所以这可能没有帮助。

部分但丑陋的成功

我找到的实现我想要的唯一方法是将调试器脚本包装在一个 cmd 脚本中,并让它使用 %~dp0 构建我要加载的所有脚本文件的绝对路径。

cdb.exe -c ".load jsprovider.dll;.scriptload %~dps0mylib.js;.scriptload %~dps0this_script.js;$<%~dp0this_script.scr" MyApp /arg1 /arg2

我通常更喜欢在“.scr”(windbg 脚本)中加载 jsprovider 和脚本,但我不知道如何在其中获取任何环境信息(目录等)。

有没有更好的方法?

打开命令提示符并设置临时环境变量

或使用 MyComputer Properties 并设置永久环境变量并在 windbg / cdb /kd 中使用它

下面显示的是临时环境变量的用法

C:\>set w
windir=C:\Windows

C:\>set WINDBG_SCRIPT_DIR=f:\zzzz\wdscript

C:\>set w
WINDBG_SCRIPT_DIR=f:\zzzz\wdscript
windir=C:\Windows

C:\>cdb cdb

Microsoft (R) Windows Debugger Version 10.0.17763.132 AMD64

(1d9c.231c): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff9`cb042dbc cc              int     3

0:000> as /e foo WINDBG_SCRIPT_DIR

0:000> al
  Alias            Value
 -------          -------
 foo              f:\zzzz\wdscript

0:000> .scriptload  ${foo}\mojo.js
JavaScript script successfully loaded from 'f:\zzzz\wdscript\mojo.js'
0:000> dx @$scriptContents.hola_mojo()
hola mojo this is javascript