跟踪调试 Lua 程序
我们用 lua 做主要的项目开发语言,一直有同学希望可以在 IDE 里单步跟踪调试 lua 代码。我总觉得这个坏习惯是被 Windows 带坏的。当然,很多年前,我也尝试过编写一个图形界面的 debugger 。后来这玩意半途而废了。因为我觉得没啥实用价值,需要这样去调试 lua 程序的程序员反正也写不好 lua 程序。宁可不要这种工具让 lua 程序员的代码质量能提高一点。
后来过了两年,还在网易时,又有同学要求有一个方便点的调试器。我又写过一个远程调试器,gdb like 的界面,用 C/S 方式调试,并用 GTK 配了一个 GUI 的 client 。主要就是远程设置断点,观察变量等。有兴趣的同学可以看这一篇。
这套东西不多提了。今天又有人老话重提。我觉得吧,与其做一个交互式的调试器,不如做一个 trace log 简单实用。毕竟在生产环境,不是有那么多机会让你中断下服务单步调试的。
我们如果可以 log 下需要监控的函数的内部执行流程,以及相关变量的变化。是很容易找到 bug 的。
只要 log 格式规范,很容易另外写一个独立的 GUI 工具,带代码编辑器,可以交互式的重现运行流程。
我花了两小时随手写了一个 trace 工具,还凑合能用。它可以跟踪调用 trace 的当前函数的运行。当函数返回后,自动把 debug hook 取消。
如果再花点精力,可以加上监视 foo.bar 这样的变量。这需要对 table 访问的支持,不过我懒得做了。
有兴趣看看的同学可以从 github 仓库自取。
Comments
Posted by: chink | (17) June 23, 2020 04:45 PM
Posted by: Anonymous | (16) March 2, 2019 09:45 AM
Posted by: blues1021 | (15) June 5, 2018 10:37 AM
Posted by: xiaochen | (14) January 13, 2014 02:53 AM
Posted by: LUA | (13) May 22, 2012 08:39 PM
Posted by: 糖足麻痛康 | (12) March 19, 2012 04:48 PM
Posted by: xff | (11) March 8, 2012 12:22 PM
Posted by: 88娱乐城怎么样 | (10) March 7, 2012 04:39 PM
Posted by: tangly | (9) February 25, 2012 03:21 PM
Posted by: Zhe | (8) February 21, 2012 09:12 PM
Posted by: cd | (7) February 19, 2012 10:36 AM
Posted by: HerryLee | (6) February 19, 2012 01:34 AM
Posted by: acai | (5) February 18, 2012 08:10 PM
Posted by: lcinx | (4) February 18, 2012 06:30 PM
Posted by: nj | (3) February 18, 2012 11:27 AM
Posted by: ten | (2) February 18, 2012 11:26 AM
Posted by: Freeeyes | (1) February 17, 2012 11:16 PM