有一个开源软件,用C++写的,其中使用了大量的设计模式,很多功能封装在动态链接库中,运行时动态加载这使得跟踪和调试变得有些困难,比如说有时候难以搞清楚这个函数到底是父类的还是子类的因此,我能想到的一个办法是利用__FILE__,__LINE__和__FUNCTION__这三个宏插入一个打印宏语句到每个函数的开始.这样,运行的时候就能搞清楚其执行的详细过程
但问题是,手动添加工作量太大,有没有办法自动处理?我能想到的三个思路:1.编译时处理也就是说是否存在某个工具具备这个功能,在编译时加入一些指令.类似于gprof一样2.文本处理,用文本处理工具识别函数体,然后修改源码3.手动添加,只能用于较为关心的类.
第一种办法最优,第三种最次.谁有前两种思路的解决方案?或是其它更好的方案?谢谢
|