OutputDebugString格式化输出调试信息

  1. 使用原因
  2. 原函数缺陷
  3. 改进方案

使用原因

  • OutputDebugString属于windows API的,所以只要是包含了window.h这个头文件后就可以使用了。可以把调试信息输出到编译器的输出窗口,还可以用DbgView(本机或TCP远程)这样的工具查看,这样就可以脱离编译器了。

原函数缺陷

  • 目前仅支持一个参数的传入

改进方案

  • 创建一个tools.h以及tools.cpp文件

  • .h文件

    void __cdecl OutputDebugStringF(const char *format, ...); 
    
    #ifdef _DEBUG  
    #define DbgPrintf   OutputDebugStringF  
    #else  
    #define DbgPrintf  
    #endif 
  • .cpp文件

    void __cdecl OutputDebugStringF(const char *format, ...)  
    {  
        va_list vlArgs;  
        char    *strBuffer = (char*)GlobalAlloc(GPTR, 4096);  
    
        va_start(vlArgs, format);  
        _vsnprintf(strBuffer, 4096 - 1, format, vlArgs);  
        va_end(vlArgs);  
        strcat(strBuffer, "\n");  
        OutputDebugStringA(strBuffer);  
        GlobalFree(strBuffer);  
        return;  
    }  
  • 项目中导入头文件即可使用

  • 效果

    DbgPrintf("HelloWorld!!!");

    效果

  • 还可以使用其他的一些调试工具查看调试信息,简单方便


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 787772394@qq.com

文章标题:OutputDebugString格式化输出调试信息

本文作者:二豆子·pwnd0u

发布时间:2020-10-12, 18:01:01

最后更新:2023-05-18, 09:53:14

原始链接:http://blog.codefat.cn/2020/10/12/OutputDebugString%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

/*爱心代码*/ /*雪花效果*/ /*百度代码自动提交*/