一些关于 Chrome Console 调试工具的资源(Nodejs开发者也适用)
一些关于 Chrome Console 调试工具的资源(Nodejs开发者也适用)
昨天看了个幻灯片 [Secrets of the Browser Developer Tools][slide] [slide]: http://www.83rdstasis.net/devtoolsecrets/slides/london-web/
发现一些调试工具都没有用到过, 觉得有点新奇.
下面的代码能在 Chrome Console 里打印表格出来:
var data = [["Andi", "Smith", "M"],["Amy", "Smith", "F"]];
console.table(data);
var data = { “Andi”: {
“surname”: “Smith”,
“gender”: “M”,
“favfood”: “Yorkshire Puddings”
}, “Amy”: {
“surname”: “Smith”,
“gender”: “F”,
“favfood”: “Curry”
}};
console.table(data, [“surname”, “favfood”]);
Trace 打印代码的调用栈:
console.trace();
可以和 Firebug 一样监视元素所有事件:
monitorEvents(elem);
于是去翻了一下 Chrome 和 Firebug 的文档, Console 的部分
https://developers.google.com/chrome-developer-tools/docs/console-api https://developers.google.com/chrome-developer-tools/docs/console http://getfirebug.com/wiki/index.php/Console_API
另一个算实用的功能是 console.log
还有很多的参数…
比如对 log 内容使用 CSS:
console.log("%cUser %s has %d points", "color:orange; background:blue; font-size: 16pt", 'name', 1);
常用的一些手法可以看这里: http://www.andismith.com/blog/2011/11/25-dev-tool-secrets/ 另外最近有个网站(似乎是幻灯片作者?), 专门搜集调试工具的技巧, 建议围观 :P http://devtoolsecrets.com/
等到哪天某项目搞定了, 用 Chrome DevTools 直接调试 Node 代码… 然后开心了
一些关于 Chrome Console 调试工具的资源(Node.js 开发者也适用)
昨天看了一个幻灯片《Browser Developer Tools Secrets》,发现里面介绍了很多我之前未曾使用过的调试工具,觉得非常新奇。
使用 console.table
打印表格
console.table
可以用来将数组或对象以表格形式输出到控制台。这对于展示数据结构特别有用。
// 示例 1: 数组
var data = [
["Andi", "Smith", "M"],
["Amy", "Smith", "F"]
];
console.table(data);
// 示例 2: 对象
var data = {
"Andi": {
surname: "Smith",
gender: "M",
favfood: "Yorkshire Puddings"
},
"Amy": {
surname: "Smith",
gender: "F",
favfood: "Curry"
}
};
console.table(data, ["surname", "favfood"]);
使用 console.trace
打印调用栈
console.trace()
可以帮助你查看当前函数的调用栈,这对于调试复杂的应用程序非常有帮助。
function a() {
b();
}
function b() {
console.trace();
}
a();
运行上述代码时,控制台会显示从 a()
到 b()
的调用路径。
使用 monitorEvents
监视元素事件
monitorEvents
可以让你监视某个DOM元素的所有事件,这对调试DOM交互非常有用。
let elem = document.querySelector('button');
monitorEvents(elem);
这段代码会让控制台打印出按钮上发生的每一个事件,如点击、鼠标移入等。
使用 console.log
打印带样式的消息
console.log
不仅可以打印纯文本,还可以通过格式化字符串来添加CSS样式。
console.log("%cUser %s has %d points", "color: orange; background: blue; font-size: 16pt", 'name', 1);
以上代码会在控制台中打印带有橙色背景和蓝色字体的消息。
更多资源
更多关于Chrome和Firebug控制台API的信息可以在以下链接找到:
此外,还有一些其他资源推荐:
- Dev Tool Secrets - 收集了许多调试工具的技巧。
- 25 Dev Tool Secrets - 安迪·史密斯的博客文章,介绍了25个开发工具的秘密。
最后,虽然现在主要讨论的是浏览器端的调试工具,但未来某个项目搞定之后,我们也可以直接使用Chrome DevTools来调试Node.js代码。
对于“一些关于 Chrome Console 调试工具的资源(Nodejs开发者也适用)”这个主题,虽然大部分调试工具主要针对浏览器环境,但Node.js开发者也可以通过一些方法来利用这些工具。例如,你可以使用chrome-remote-interface
库来远程连接到Chrome DevTools,从而直接在浏览器中调试Node.js应用。
示例代码
const chrome = require('chrome-remote-interface');
(async function() {
const client = await chrome();
// 启用所需的功能
await client.Page.enable();
await client.Runtime.enable();
// 设置断点并运行代码
await client.Debugger.setBreakpointByUrl({lineNumber: 0, url: 'file:///path/to/your/nodejs/app.js'});
await client.Runtime.evaluate({expression: 'console.log("Hello from Chrome DevTools!")'});
// 断点触发时的操作
client.Debugger.onPaused((event) => {
console.log('Paused at line:', event.location.lineNumber);
// 继续执行或单步执行等操作
});
// 完成调试后关闭客户端
await client.close();
})();
这段代码展示了如何使用chrome-remote-interface
库来启用Chrome DevTools的页面和运行时功能,并设置一个断点在指定的文件和行号。当断点被触发时,会打印出当前的行号。最后,记得关闭客户端以结束调试会话。
解释
chrome-remote-interface
允许Node.js程序与Chrome DevTools进行通信。- 通过
Debugger.setBreakpointByUrl
方法可以在特定的URL和行号处设置断点。 Runtime.evaluate
用于执行JavaScript表达式。- 通过监听
Debugger.paused
事件,可以捕获断点触发时的情况,便于进一步分析。
这使得Node.js开发者能够利用强大的浏览器调试工具来帮助开发和调试应用。