如何生成日志文件?急……

suguanqun 2004-08-11 04:43:05
一个程序中想知道一个函数被调用了多少次,每次调用它的是哪个函数,就想在这个循环中加个日志输出,如何实现?

如:
1 a
2 b
3 c
4 a
5 c
……
……
……

...全文
277 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tyglikelove 2004-08-11
对,用一个变量记数的办法设置,这个办法确实不错的
回复
大雾 2004-08-11
请查一下编译器常量,如_FILE_NAME_什么的,有些编译器支持函数名常量,在你的函数中使用就行了
回复
an_bachelor 2004-08-11
计算一个函数被调用多少次除了用宏
还可以设置全局变量或在函数内部设置一静态变量解决
ULONG gCount = 0;
void fun(void)
{
static ULONG nCount = 0;
nCount++;
gCount++;
//Todo:...
}
回复
superhandsome 2004-08-11
汇编可以搞定
回复
holyeagle 2004-08-11
如果精通汇编,可以尝试分析call指令,一般来说,在函数调用时候都会用call执行。
回复
keansun 2004-08-11
用用DevPartner的代码覆盖率的工具,很容易解决你的问题的。
回复
diaoni 2004-08-11
然后在你写的每个函数内加上:
#ifdef DEBUG
#define FUNNAME #xxx
#endif
其中xxx处为该函数的名字
==================================

呃,这可能不行,或者这样:

#ifdef DEBUG
static std::string FUNNAME="xxx";
#endif
回复
diaoni 2004-08-11
做不到吧,除非是在调用的时候进行记录,可以利用宏,例如:

void fun(); //这是你想要跟踪的函数
std::vector<string> info; //定义一个全局变量用以记录调用函数

#ifdef DEBUG
#define trace_fun() \
info.push_back(FUNNAME);\
fun();
#else
#define trace_fun() fun();
#endif

然后在你写的每个函数内加上:
#ifdef DEBUG
#define FUNNAME #xxx
#endif
其中xxx处为该函数的名字

然后就通过trace_fun()宏来调用你的函数,最后将info的内容输出即可,呃,还要找个地方将info的内容清空。
这只是个简单的例子,还可以将它写得更完善。
回复
hyw1980 2004-08-11
我也想知道啊!
回复
tangshiping 2004-08-11
呵呵,关键的地方大家不要后退啊,我就等这个答案呢
回复
oyljerry 2004-08-11
想知道调用它的函数,这个好像不是很好实现
回复
flyelf 2004-08-11
跟踪被调用多少次,可以简单的用一个静态变量来实现,但是跟踪被那些函数调用...,除了在调用的地方设置,否则在函数内部好像没有没有什么好的方法可以知道本函数被那些函数调用了。
回复
tangshiping 2004-08-11
调用它的是哪个函数这个问题我也想知道
回复
vcar 2004-08-11
up
回复
Kudeet 2004-08-11
可以写个CLog类,有以下接口应该就可以了。
Create
Open
AppendLine
Close

你就在那个被调用的函数里使用上面的接口对日志文件操作。

或者定义一个全局函数。
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-11 04:43
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……