gpt4 book ai didi

javascript - 如何在嵌入式 V8 中调试 javascript?

转载 作者:行者123 更新时间:2023-11-29 15:25:23 26 4
gpt4 key购买 nike

我正在尝试学习如何使用 V8 中的 Debug 对象在嵌入式 javascript c++ 应用程序中调试 javascript。

我调用了 v8::Debug::SetDebugEventListener 并设置了回调。然后我调用 v8::Debug::GetDebugContext 来获取调试上下文,然后运行如下命令:Debug.scripts()

如果我打印从 C++ 调用的结果,我得到:

 [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]

我实际上想做的是为脚本中给定的行号设置一个断点,但即使是最基本的东西也无法正常工作。

我得到了调试事件监听器的回调,但回调输入参数(非用户提供的)数据对我来说也没有任何意义。

{script_: {context_: {data_: undefined, handle_: 0, type_: "context"}, handle_: 1, script_: {}, type_: "script"}, type_: 4}
{break_id: 2, selected_frame: 0}

谢谢。

最佳答案

(注意:这可能是也可能不是正确的做事方式,但在一些简单的情况下它对我有用)

v8::DebugEvent debug_event_type = event_details.GetEvent();

然后打开结果:

if (debug_event_type == v8::DebugEvent::Break) {

这是为命中一个非常简单的断点而传入的数据:

 /* GetEventData() when a breakpoint is hit returns:
* {
* break_points_hit_: [{active_: true, actual_location: {column: 4, line: 13, script_id: 55}, condition_: null,
* script_break_point_: {
* active_: true,
* break_points_: [],
* column_: undefined,
* condition_: undefined,
* groupId_: undefined,
* line_: 13,
* number_: 1, <== breakpoint number - v8-assigned
* position_alignment_: 0,
* script_id_: 55, <== script id passed in from v8::ScriptOrigin when compiled
* type_: 0
* },
* source_position_: 175}], frame_: {break_id_: 8, details_: {break_id_: 8, details_: [392424216, {}, function a(){
println("Beginning of a()");
let some_var = 5;
some_var += 5;
b(some_var);
println("End of a()");
}, {sourceColumnStart_: [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 4, undefined, undefined, undefined, undefined, undefined, undefined, undefined]}, 0, 1, 175, false, false, 0, "some_var", 5]}, index_: 0, type_: "frame"}}

无耻的 self 推销:您可以在我的 v8 集成简化库 v8toolkit 中看到我在调试 v8 方面取得的进展:https://github.com/xaxxon/v8toolkit/blob/master/src/debugger.cpp

关于javascript - 如何在嵌入式 V8 中调试 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com