Nodejs debug中watch表达式的写法

Nodejs debug中watch表达式的写法

程序如下,文件名字 debug.js

var a = 1;
var b = 'world';
var c = function(x){
 console.log('hello '+b+x+a);
}
c(10);
node debug debug.js	//启动调试

默认在第一行,现在我运行到第二行了 我想知道a+100等于多少,这个watch(expr)的表达式因该怎样写呢:

watch(a+100) //这样写不对啊
debug>watch(100+10)//如果是这样,在通过watchers查看,就可以看到表达式的值了,但是如果是这样,表达式就没有意义了把,还请请教大家,谢谢。

5 回复

在Node.js的调试器中使用watch命令来监视变量或表达式的值是一种非常有用的功能。watch命令允许你在程序执行过程中动态地跟踪特定变量或表达式的值变化。在你的例子中,你想在调试时监控变量a与100相加的结果。

示例代码及解释

首先,让我们回顾一下你提供的代码:

var a = 1;
var b = 'world';
var c = function(x){
 console.log('hello '+b+x+a);
}
c(10);

如何正确使用 watch 命令

当你使用node debug debug.js启动调试器后,可以输入以下命令来设置监视点(watchpoint):

debug> watch("a + 100")

这里的关键在于watch命令需要一个字符串形式的表达式。这意味着你需要将你想要监视的表达式作为字符串传递给watch函数。这样,当你继续执行代码时,调试器会显示a + 100的结果。

进一步操作

一旦设置了监视点,你可以使用cont(继续执行)命令来让程序继续运行,直到下一个断点或者结束。然后,你可以使用watchers命令来查看当前被监视的所有表达式及其值:

debug> watchers

这将输出类似如下的信息:

a + 100: 101

这表明当前a + 100的值为101。

注意事项

  • 确保你的表达式是一个字符串。例如,watch(a + 100)是错误的,因为它试图将a + 100视为一个变量名而不是一个表达式。
  • 你可以通过unwatch("a + 100")取消对某个表达式的监视。
  • 如果你希望监视更复杂的表达式,只需确保将其放在引号内即可。

通过这种方式,你可以方便地监控程序运行过程中的关键变量或表达式的值变化,这对于调试复杂逻辑非常有帮助。


debug>repl,然后就可以输入表达式了,按ctrl+c一次退出表达式状态。

repl是可以的,但是现在我需要watch呢…

应该是 watch(‘expr_name’)

在 Node.js 调试器中,watch(expr) 命令用于监视一个表达式的值。你不能直接使用 a + 100 这种形式,因为这会导致立即计算结果,而不是监视表达式的变化。

如果你想监视 a + 100 的值,你需要使用一个函数来包裹这个表达式,以便在每次计算时都能正确地获取当前 a 的值。以下是如何操作的示例:

var a = 1;
var b = 'world';
var c = function(x) {
    console.log('hello ' + b + x + a);
}

// 启动调试模式
// node debug debug.js

// 进入调试模式后,你可以设置断点并运行到第二行
// 然后输入以下命令来监视 a + 100 的值
watch('a + 100')

在这个例子中,watch('a + 100') 会监视字符串 'a + 100' 的值。每当执行到这个 watch 表达式时,它会动态计算 'a + 100' 的值,并显示结果。

另外,如果你希望在每次执行到特定位置时自动更新监视表达式的值,可以在 debug 模式下使用 repl 来手动检查变量或表达式的值。例如:

debug> repl
Press Ctrl + C to leave debug repl
> a + 100
101

这样你就可以实时查看 a + 100 的值了。

回到顶部