<顶>给函数增加调试打印头(五)(申请加精)

本文由 @lonelyrains 出品,转载请注明出处。 
文章链接: http://blog.csdn.net/lonelyrains/article/details/25244013


        工作有点忙,再又有点懒,所以从前面几篇:给函数增加debug头(一) 给函数增加Debug头(二) 给函数增加Debug头(三) 给函数增加Debug头(四) 给函数增加Debug头 - windows平台的普通打印调试处理 的断断续续至今,才略微仓促地发布第一个安装包0.0.0.1版本。目前只支持Windows+VC6.0及其以上的版本的C/C++程序。

        下面进入正题


1、安装流程

       

点击安装包的'安装'按钮之后,会先在注册表中为鼠标右键点击文件或者文件夹时增加一个功能“添加调试打印头”,如图:

然后会在 系统盘:\Program Files\Microsoft Visual Studio\VC98\Include内添加AddDbgHead.h和StackWalk.h文件,系统盘:\Program Files\Microsoft Visual Studio\VC98\Lib内添加stackwalk.lib文件,再在系统盘:\Windows\System32目录增加三个文件addDbgHead.bat、addDbgHeadFile.bat和AddDbgHead.exe。至此就算完成了安装。


2、程序文件功能结构

AddDbgHead.h:调试打印函数的声明、宏定义

StackWalk.h:为VC6.0增加__FUNCTION__宏的支持,VC9.0以上版本则不需要,未在VC7.0~VC8.0验证

stackwalk.lib:为VC6.0增加__FUNCTION__宏的支持VC9.0以上版本则不需要,未在VC7.0~VC8.0验证

addDbgHead.bat:为文件夹的鼠标右键的注册表设置中添加功能支持

addDbgHeadFile.bat:为C/CPP文件的鼠标右键的注册表设置中添加功能支持

AddDbgHead.exe:格式化、解析代码并增加调试打印头语句


3、代码

AddDbgHead.h:

#if _MSC_VER < 1400 // VS2005以下
#include <StackWalk.h>
#pragma comment(lib, "stackwalk.lib")
#endif
#define ADD_DBG_HEAD_START OutputDebugStringA(__FUNCTION__);{
#define ADD_DBG_HEAD_END   }


StackWalk.h:
#ifndef _STACK_WALK_H_
#define _STACK_WALK_H_

extern const char * __stdcall GetFuncName( void );
#define __FUNCTION__ GetFuncName()

#endif

addDbgHead.bat:for /r %1 %%a in (*.cpp *.c) do call "addDbgHead.exe" -A1 %%a 

addDbgHeadFile.bat:"addDbgHead.exe" %1 -A1 %%a


4、试用截图: 左边为测试代码,右边为输出





5、注意事项

1)AddDbgHead.h中自定义的宏默认使用OutputDebugStringA函数输出函数名,在DebugView中查看调用逻辑。若编译不过或者需要其他方式显示函数调用流程,可以使用类似如下方案:

#define OutputDebugStringA(s) printf("%s\n",s)

2)因为没有将头文件放在非VC6.0的目录,所以在其他环境例如VC9.0内编译时,需要配置对VC6.0目录的引用,(一般情况下都会装VC6.0和VC9.0(即VS2008)的吧)。配置路径为:工具->选项->项目和解决方案->VC++目录:"包含文件"添加系统盘:\Program Files\Microsoft Visual Studio\VC98\Include"引用文件"添加系统盘:\Program Files\Microsoft Visual Studio\VC98\Lib。都放在最下面,就OK了。如图:


欢迎试用并提出宝贵意见。


6、StackWalk工程代码免积分下载链接:

http://download.csdn.net/detail/lonelyrains/7312913


7、安装包免积分下载链接:

http://download.csdn.net/detail/lonelyrains/7312953


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值