基于Lua的C/C++调试模块

本文介绍了一种基于Lua的C/C++调试方法,通过记录调用栈、统计函数调用次数和设置断点,实现对代码的动态分析。核心思想是利用析构函数判断函数执行结束,并通过Lua脚本控制调试行为。调试代码插入简单,减少了对源码的影响。
摘要由CSDN通过智能技术生成

关于代码阅读分析工具的思考

    每当阅读逻辑复杂的代码时,首先都想弄清函数之间的调用关系,然后想在适当的位置打上断点(或者移除断点),或者想看看某个函数被调用了多少次。很多代码阅读器、编辑器都已经提供了这些基本的功能,甚至提供的功能比我们想象的要强大很多,下图为SourceInsight和VS2012的函数调用关系图。但有时候总不能满足我们的所有需求。其中有一种情况是代码分析工具都是基于静态分析(有动态的吗?),无法确定函数的调用顺序。所以我乐此不疲的写一个又一个版本的调试代码,如果把VS的调试功能比做大海,我的代码只是浪花,但是浪花也有美的一瞬间。


要实现的功能

    1) 能直观的输出程序运行过程中函数的调用关系。主要技术是记录调用栈的信息。

    2)统计函数被调用的次数。

    3)可以很方便的给某些函数下断点。

    4)对源码的修改尽量少。

    在上面所述的四点中,第4条尤为重要,如果在函数里面加入过多的调试代码,即增加了维护的工作量,又破坏了代码原来的结构。我以前写过很多个版本的调试代码,有一个技术问题一直困扰着我。为了记录调用栈的信息,我在函数的开头插入一条代码ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值