在WindBG断点命令中调用JavaScript函数
Calling javascript functions in windbg breakpoint-commands
我有一个关于执行的windbg-issueJavaScript功能作为断点命令。该观察结果是在WindBG预览10.0.17030.1002中进行的以及最近版本的windbg在Windows 10上调试本机X86 C 程序时。
测试设置
在我的javascript-file dbg_test.js中,我有以下功能:
function test()
{
var ctl = host.namespace.Debugger.Utility.Control;
host.diagnostics.debugLog(">>> Testn");
ctl.ExecuteCommand("g");
}
在windbg中,我加载了javascript-provider,加载我的dbg_test.js脚本并定义一个命令命令的断点命令:
bs 0 "dx @$scriptContents.test()"
预期行为
字符串">>>测试"在命令窗的输出窗格中显示每次当打断点0时。调试器恢复执行。
观察到的行为
输出">>>测试"仅首次显示当断点0击中时。随后击中断点0没有产生任何输出。
备注
1)使用"旧样式"进行类似测试,windbg-commands可以正常工作:
bs 0 ".printf ">>> Test\n\n";g;"
但是仅在结束和重新启动windbg
之后2)当我将函数"测试"的码移动到函数" Invokescript()"并通过
定义断点命令时,显示了相同的行为。bs 0 ".scriptrun d:\dbg_scripts\dbg_test.js"
3)从windbg-command-line工作中运行脚本。
4)在上面的测试中,调用JavaScript功能在以前的版本的WindBG中工作。
5)似乎语句
ctl.ExecuteCommand("g");
是至关重要的:如果我评论此陈述,则是断点 每次都被击中
的输出host.diagnostics.debugLog(">>> Testn");
显示在断点的每个命中。 当然,我必须通过按F5或输入命令" G"
手动恢复执行问题
- 有人可以复制这个问题吗?
- 以这种方式使用JavaScript功能是合法的还是我在这里做错了什么?
您的反馈非常感谢!
善良/最好的问候!
我遇到了与您相同的问题。我能够通过声明脚本全局变量来绕过问题
var lines = [];
并将日志消息推向此数组,而不是调试它们:
lines.push(">>> Test");
为了查看行,我创建了一个函数
function print_lines() {
for (var line of lines) {
host.diagnostics.debugLog(line + "n");
}
lines = [];
}
我从提示符下打来的
dx @$scriptContents.print_lines();
我知道这并不是真正回答您的问题,但这对于其他面临同样问题的人可能仍然有帮助。
相关文章:
- 如何使用EM_JS从带有参数的C++调用javascript方法
- 如何在 C++ 中从 V8 调用 Javascript 函数
- 从C++代码抛出错误调用 JavaScript 回调函数 - nbind
- node.js Nan:在函数C++调用 JavaScript 回调
- 如何使用 cocos creator 在 Cocos2d-X/Cocos2d-JS 中调用 javascript 函数并
- v8.从 C++ 保存和调用 JavaScript 函数
- 在WindBG断点命令中调用JavaScript函数
- 在V8中从C++回调调用Javascript函数
- 从QT调用JavaScript函数,并未显示输出
- 使用node.js从C++调用JavaScript
- 如何使用 WebKit 调用 JavaScript 中的C++函数
- NodeJS Addon从NAN AsyncWorker::Execute内部调用Javascript回调
- 使用 Emscripten 异步调用 JavaScript C++函数
- 从 C++ 节点调用 JavaScript 函数.js扩展
- ActiveX 调用 Javascript 函数
- 从C++调用javascript函数
- 通过c++调用javascript推送服务
- 如何使用V8从C++访问和调用Javascript对象属性和方法
- 如何在QWebengine中调用Javascript中的c++ /Qt函数
- v8,libuv,nodejs,win32api-如何调用EnumWindows并具有回调调用javascript函数