我在launch.json文件中添加了配置,其中包含以下详细信息:
{
"name": "Attach"
"type": "node",
// TCP/IP address. Default is "localhost".
"address": "localhost",
// Port to attach to.
"port": 5858
}
现在我使用以下命令启动我的应用程序:node --debug-brk ./bin/www
当我转到VSCode并在顶部的调试菜单中选择Attach
并单击播放按钮。
它附加,但当我去浏览器并打开一个页面时,它不是我的index.js
文件中的断点或处理函数。
你能帮忙解决可能出现的问题吗?
答案 0 :(得分:4)
您的断点可能设置得太早,并且未按节点注册。如果在连接后设置断点,它应该会有所帮助。
我们已经改进了VSCode的这种体验,它应该在0.4.0
中可用答案 1 :(得分:4)
节点中有两个断点问题(这些问题并非特定于VSCode,但您也可以在节点检查器中看到它们):
如果您在应用的启动代码和启动节点中使用--debug(与--debug-brk相对)设置断点,则节点会立即启动并在VSCode有机会之前执行您的启动代码注册断点。因此,如果需要调试启动代码,请使用--debug-brk标志,因为它允许VSCode在节点启动应用程序之前设置断点。
Node在加载时不会完全解析源文件,但会延迟解析闭包(回调等),直到首次命中它们的代码为止。因此,回调上设置的断点并不总是由节点正确注册,因为它尚未解析代码。这个懒惰的'可以通过使用--nolazy标志启动节点来禁用行为。
在下一版本的VSCode(0.4.0)中,我们尝试按如下方式解决这些问题:
VScode将始终使用--debug-brk标志启动节点,但如果用户未指定" stopOnEntry:true"则将隐藏第一站并继续。这将避免启动代码中遗漏断点的问题。
如果在尚未由节点解析的代码中设置断点,则节点将在解析的代码中的下一个可能位置注册它们。因为这些"实际"位置由节点返回给客户端,VSCode能够显示这些位置。因此,用户将看到在未解析的回调中设置的断点"跳转"到了更低的位置,他将更好地理解为什么调试器没有停在请求的位置。此外,我们添加了一个" Reapply"按钮到断点视图,这使得清除和设置所有断点非常容易。
答案 2 :(得分:3)
始终清除断点并在附加后设置它们。我学到了很多困难。这肯定是一个错误。
我一直在研究这个问题,这是迄今为止我发现的0.3.0。
这不起作用!
node --debug src/server/app.js
这有效!
node --debug src/server/app.js
这不起作用,因为--debug不会启动,除非它在节点之后和文件之前
node src/server/app.js --debug
这是有效的,假设您有一个吞咽过程
gulp serve-dev --debug
这不起作用,有时
gulp serve-dev --debug
为什么有时候?我能说的最好的是断点有时变得很时髦。有时它们工作正常,有时我必须删除它们并在连接调试器之前重新添加它们。