vs下调试程序时,把信息打印到输出窗口

摘要:
重印:https://blog.csdn.net/cwj066/article/details/82423627 https://stackoverflow.com/questions/20508086/getting-rid-of-atltracegeneral-category-shown-in-atltrace-output方法1:编写一个变量参数函数,并将要打印到输出窗口的信息传递给该函数

转载:https://blog.csdn.net/cwj066/article/details/82423627

     https://stackoverflow.com/questions/20508086/getting-rid-of-atltracegeneral-category-shown-in-atltrace-output

方法一:写一个变参函数,把想要打印到输出窗口的信息传给函数,函数内部调用系统函数OutputDebugString(),就可以把调试信息打印到输出窗口。

void OutputDebugPrintf(const char* strOutputString,...)
{
    char strBuffer[4096] = {0};

    va_list vlArgs;
    va_start(vlArgs, strOutputString);
    _vsnprintf_s(strBuffer, sizeof(strBuffer) - 1, strOutputString, vlArgs);
    
    va_end(vlArgs);
    OutputDebugString(CA2W(strBuffer));
}

方法二:调用系统自带的库函数TRACE(),这个函数其实和printf()类似,只不过printf()这个是把信息输出到控制台窗口,而TRACE()这个函数是把信息输出到vs2010的输出窗口,方便编程人员调试用。

TRACE(“%s”, "no error, no warning");

TRACE(“%d”, 1024);

TRACE(“%d”, 520.1314);

TRACE(“%c”, 'U');

头文件:

#include<afx.h>

未验证方法1

其它:不想要这个信息

vs下调试程序时,把信息打印到输出窗口第1张

采用下面的方法,显示的信息变成:

vs下调试程序时,把信息打印到输出窗口第2张

问题:

After upgrading to VS2013 I started receiving all my ATLTRACE2 messages in a "() : atlTraceGeneral - My output" format.

e.g.

ATLTRACE(_T("This is my data: %d
"), 124);

... shown as

dllmain.cpp(1121) : atlTraceGeneral - This is my data: 124

I don't need any additional info. Is here some way to get back to the previous format so that the output would be just

This is my data: 124

回答

The only working fix is to undef ATLTRACE under _DEBUG macro and implement trace by yourself. Guys at Microsoft recommended the same.

The solution looks like this:

1 #ifdef _DEBUG
2 #ifdef ATLTRACE 
3 #undef ATLTRACE
4 #undef ATLTRACE2
5 
6 #define ATLTRACE CustomTrace
7 #define ATLTRACE2 ATLTRACE
8 #endif // ATLTRACE
9 #endif // _DEBUG

with the following CustomTraces:

void CustomTrace(const wchar_t* format, ...)
{
    const int TraceBufferSize = 1024;
    wchar_t buffer[TraceBufferSize];

    va_list argptr; va_start(argptr, format);
    vswprintf_s(buffer, format, argptr);
    va_end(argptr);

    ::OutputDebugString(buffer);
}

void CustomTrace(int dwCategory, int line, const wchar_t* format, ...)
{
    va_list argptr; va_start(argptr, format);
    CustomTrace(format, argptr);
    va_end(argptr);
}

免责声明:文章转载自《vs下调试程序时,把信息打印到输出窗口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DEP(数据执行保护)介绍fullcalendar日历控件知识点集合下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java jdb命令详解

jdb - Java debugger 功能描述: 通过简单的命令行程序,对本地或远程jvm进程进行调试。 开启jdb会话:有多种方式可以开启jdb会话. (1)常见的方式是采用Jdb命令打开一个新的jvm进程进行调试. 通过将jvm进程启动命令的java替换成jdb就可以了。 通过此方式启动jdb会话,将开启一个jvm进程,加载指定的class, 并停在...

使用sublimeserver启动本地服务器进行调试

最近在做前后端分离的项目,访问后台接口的时候会产生跨域问题,修改了相关配置解决了跨域问题,但是配置中只对开发环境进行了设置,没有设置生产环境,为了验证生产环境确实无法访问后台接口遂npm run build之后把index.html页面通过本地服务器启动一下,总之说了这么多,总结起来也就一句话,我想要弄一个本地服务器... 之前使用过sublime的本地服...

md /mdd /ml /mt/mtd

VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库                        库文件Single thread(static link) ML            libc.libDebug single thread(static link) MLd      ...

GDB堆栈跟踪与汇编调试

GDB堆栈跟踪与汇编调试 堆栈跟踪 源代码: 对预先编写的 stack.c 文件进行编译,并且使用 CGDB 进行调试,对堆栈进行跟踪,了解该代码堆栈是如何变化的。 在 CGDB 中,先设置 main 断点,接着运行(run),使用 frameinfo frame 分别查看当前栈帧的简要信息,以及该栈帧的详细信息。其中: frame 打印出的信息:...

第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperi...

vim命令以及gcc编译器的常用cmd

Gcc常用命令:         -c    仅对源文件进行编译,不链接生成可执行文件。常用于查错和只生成目标文件。     -o    经过gcc处理过后的结果保存在-o后面的文件中,可以是多种文件。如无参数,默认名称不同     -v    查看版本信息     -g    在可执行文件中加入调试信息,相当于Windows下的Debug版本。方便使用g...