可以打印栈信息的日志函数,移动混合开发必备!!!

stack-log

可以打印栈信息的日志函数,移动混合开发必备!!!

简介

断点信息,可以反映函数的调用栈,但是不是所有的场景都适合打断点.console 直接输出的日志,可以反映的简单行数信息,但是部分场景需要结合日志所在函数的调用栈来确定某些调试信息.

偶然间发现,可以用 new Error 记录栈结构,只要能适当处理,去除不必要的栈信息,就可以很好地保持 console 日志的连续性和断点调试时函数调用的明晰性.

这是一个有一点小技巧的工具函数.很简单,很实用!

安装

nodejs 环境

npm i stack-log --save

浏览器环境

下载 lib/stack-log.js 到本地,然后:

<script type="text/javascript" src="path/to/stack-log.js"></script>

使用示例

nodejs 示例

const {log} = require("stack-log")

function funcA (){
  funcB()
}

function funcB(){
  funcC()
}

function funcC(){
  log({k:"v"})
}

funcA()


/* 可能的输出:
{"k":"v"}
    at funcC (/Users/yanfeng/Documents/tmp/stack-test/index.js:12:3)
    at funcB (/Users/yanfeng/Documents/tmp/stack-test/index.js:8:3)
    at funcA (/Users/yanfeng/Documents/tmp/stack-test/index.js:4:3)
    at Object.<anonymous> (/Users/yanfeng/Documents/tmp/stack-test/index.js:15:1)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
*/

浏览器 示例

<script type="text/javascript" src="script/stack-log.js"></script>
<script type="text/javascript">
function funcA (){
  funcB()
}

function funcB(){
  funcC()
}

function funcC(){
  log({k:"v"})
}

funcA()
</script>

可能的输出:

{"k":"v"}
    at funcC (file:///Users/yanfeng/Documents/tmp/index.html:12:3)
    at funcB (file:///Users/yanfeng/Documents/tmp/index.html:8:3)
    at funcA (file:///Users/yanfeng/Documents/tmp/index.html:4:3)
    at file:///Users/yanfeng/Documents/tmp/index.html:15:1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

WPF Process.Start 出现 Win32Exception 异常

如果使用下面的代码启动另一个软件,那么在启动的软件路径不存在时,就会出现异常System.ComponentModel.Win32Exception,没有其他信...

451
来自专栏FreeBuf

CTF挑战130分 | Rickdiculously 1.0

Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者Vi...

933
来自专栏用户2442861的专栏

cmake教程5-macro宏定义以及传递参数给源文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

863
来自专栏技术小黑屋

你真的懂么:Android中删除Preference

Android的设置界面实现比较简单,有时甚至只需要使用一个简单的xml文件即可.声明简单,但是如何从PreferenceScreen或者PreferenceC...

562
来自专栏乐沙弥的世界

Oracle 闪回区(Oracle Flash recovery area)

    Oracle闪回区已经有了好几载的岁月了,在10g的时候就被推出一直延续到现在。Oracle闪回区是为RMAN准备的,尽管抛开它我们可以同样完成数据库备...

461
来自专栏程序员互动联盟

计算机的启动过程(详细)

对于使用电脑用户来说,打开电源启动电脑几乎是每天必做的事情,但计算机在显示这些启动画面的时候都在做什么呢?大多数用户都未必清楚。 下面就向大家介绍一下从打开电源...

2605
来自专栏生信技能树

(16)芯片探针与基因的对应关系-生信菜鸟团博客2周年精选文章集

这个我非常喜欢,目录如下: 用R获取芯片探针与基因的对应关系三部曲-bioconductor 用R获取芯片探针与基因的对应关系三部曲-NCBI下载对应关系 ge...

33312
来自专栏ITCloud的专栏

“网红架构师”解决你的Ceph 运维难题-Part2

本文为长篇连续剧,将分多个篇幅发表,主要介绍了从动手部署环境到后期运营故障处理过程中常见的问题,内容由浅入深,是居家旅行运维Ceph的必备良药。

2444
来自专栏架构师之旅

expdp|impdp及exp|imp指令介绍

expdp介绍 EXPDP命令行选项 1. ATTACH 该选项用于在客户会话与已存在导出作用之间建立关联.语法如下 ATTACH=[schema_name.]...

1849
来自专栏林德熙的博客

WPF Frame 的 DataContext 不能被 Page 继承

如果使用下面的代码启动另一个软件,那么在启动的软件路径不存在时,就会出现异常System.ComponentModel.Win32Exception,没有其他信...

411

扫码关注云+社区