我在哪里可以看到Atltrace输出
Where can I see ATLTRACE output?
我正在维护C com项目。有一些跟踪行,例如Atltrace(消息);我搜索了Atltrace。MSDN告诉Visual C 输出窗口将显示它。但是,该产品是发行版。客户将没有来源,也不会在VS中进行调试。那么还有其他方便的观看方式吗?Windows Event Giewer会抓住吗?还是我必须更改代码?Win7,VS2013
atltrace仅使用调试输出,仅在调试版本中起作用!
因此,您可以为Ednuser提供一个调试版本以进行测试,并使用Sysinternals的DebugView。但这可能很复杂,因为您还必须超越不可重新分布的调试时间。
但是您可以轻松地编写具有相同功能的My_trace宏。
#define MY_TRACE GetMyTracer() // returns object of CMyTracer
...
class CMyTracer
{
...
// Helper operator to get the trace commands. They call the TraceV functions
void operator()(PCSTR pszFormat, ...);
void operator()(PCWSTR pszFormat, ...);
// Worker functions that do the real job calling TraceV functions
void Trace(PCSTR pszFormat, ...);
void Trace(PCWSTR pszFormat, ...);
// Allowed to be virtual to do some internal mystique stuff, like redirecting and this functions perform all output...
virtual void TraceV(PCSTR pszFormat, va_list args);
virtual void TraceV(PCWSTR pszFormat, va_list args);
...
现在您可以使用此而不是Atltrace
...
MYTRACE("Simple outputn");
MYTRACE("More complex output %dn", 4711);
注意:用自己的替换替换所有Atltrace宏是不明智的。您可能会将痕量输出传播到没有影响的联合国速度的情况下,但值得信息。
ATLTRACE
是一个宏,在发行版中毫无汇编。您需要使用_debug宏定义(请参阅<atltrace.h>
)重建项目以使这些项目显示。但是,ATLTRACE
生成的输出是一个调试输出字符串,通常仅在调试器的输出窗口中显示。
如果您需要重要的信息,并且如果它在您控制的代码中,则最好将ATLTRACE
宏使用更改为其他内容,以登录到事件日志或客户可以发送的日志文件给你。
如1201 Programagrarm所述,ATL项目的发布构建对ATLTRACE宏进行了评估,并且二进制文件没有针对各自的源代码行生成的真实代码。也就是说,您在不更改源代码的情况下看不到输出。
为了不太更改项目,您可以重新定义跟踪宏本身,并具有跟踪功能的产生释放构建,其中输出可以按照您定义,例如使用OutputDebugString
API进行标准调试输出。
请参阅:
- 如何在发布模式下启用跟踪宏?
- AtlReleasEtrace
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 我在哪里可以看到Atltrace输出