文档章节

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

ios122
 ios122
发布于 2017/05/04 13:00
字数 456
阅读 13
收藏 0

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

© 著作权归作者所有

共有 人打赏支持
ios122
粉丝 72
博文 76
码字总数 132179
作品 3
东城
程序员
私信 提问
打印栈信息的日志函数--stack-log

stack-log,可以打印栈信息的日志函数,移动混合开发必备。 简介 断点信息,可以反映函数的调用栈,但是不是所有的场景都适合打断点。console 直接输出的日志,可以反映简单的行数信息,但是...

ios122
2017/05/04
181
0
全栈必备的技术栈设想

喔家ArchiSelf 参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜。 ...

wireless_com
2016/11/20
0
0
itfriday/xxlogger

xxlogger xxlogger是日志打印工具类,提供对java, object-c, c的支持。xxlogger中的xx指某种语言 其中: c目录下的是c语言的实现 oc目录下的是object-c语言的实现 java目录下的是java语言的实...

itfriday
2016/12/05
0
0
用GDB调试程序(四)

查看栈信息 ————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。...

nothingfinal
2011/03/06
0
0
Android日志打印工具-android-ueueo-log

android-ueueo-log android-ueueo-log是Android日志输出工具,对输出的日志信息进行了美化,可以输出Json字符串,Xml字符串和简单的Java对象,并对输出信息进行了格式化。 感谢Logger,因为是...

UEUEO
2017/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 教程:在 Confluence 中导航

当你对 Confluence 有所了解后,你会发现 Confluence 使用起来非常简单。这个教程主要是针对你使用的 Confluence 界面进行一些说明,同时向你展示在那里可以进行一些通用的任务和操作。 空间...

honeymose
今天
2
0
sed, awk 练习

1. sed打印某行到某行之间的内容 2. sed 转换大小写 将单词首字母转化大写 将所有小写转化大写 3. sed 在某一行最后面添加一个数字 4. 删除某行到最后一行 解析: {:a;N;$!ba;d} :a : 是...

Fc丶
今天
2
0
babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部