欢迎来到天天文库
浏览记录
ID:30442650
大小:87.91 KB
页数:19页
时间:2018-12-30
《简单的c程序调试日志》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、简单的C程序调试日志想了解更多请登陆中山大学新华学院Thiscanbesolvedbylettingthelogclassstoreastaticintegerholdingthestackdepth.虽然仍有可能推断出该调用链,输出格式不到任何竭尽全力使用户很容易这样做。这是解决让log类存储静态整数堆栈深度举行。Byconvertingthestackdepthtoanindentationtheoutputcanbeformattedtoshowthecallchain.通过转换堆栈压痕深度的一链的输出的格式可以显示呼叫。Sinceitissto
2、redinastaticmember,eachinstanceofthelogclasssimplyincrementsitinitsconstructor,anddecrementsitinitsdestructor.因为它是存储在一个静态成员,每个实例的log类的构造简单增量它,它和它的析构递减研究。Usingthistechnique,theoutputbecomesmorereadable:使用这种技术,输出变得更加清晰可辨:想了解更多请登陆中山大学新华学院论坛Theloggingstatementsrequiredtogettheoutput
3、abovewouldbesomethinglikethis:该记录必须得到上面的输出会是这样的语句:CollapseCopyCodeintbar()诠释栏(){(DEBUG_METHOD("bar");DEBUG_METHOD("酒吧");//Dobarlogic//做酒吧逻辑return1;返回1;})voidfoo()无效富(){(DEBUG_METHOD("foo");DEBUG_METHOD("富");switch(bar())开关(巴()){(case0:案件0://Do0stuff,andreturnimmediately//做0的东西,并
4、立即返回return;返回;case1:案例一://Do1stuffandcontinue//做第一件东西,并继续break;打破;default:默认值:throwstd:exception("failed");扔性病:例外("失败");})//additionallogic//额外的逻辑})intmain(int/*argc*/,char*/*argv*/)国际主要(诠释/*argc*/,焦炭*/*argv中获取*/){(DEBUG_METHOD("main");DEBUG_METHOD("主");foo();美孚();return0;返回0;})
5、Noticethatregardlessofhoworwherethefoomethodexists,thelogoutputisthesameastheexitoutputiswrittenonscopecompletionofthelogobjectinstanciatedatthetopofeverymethodusingtheDEBUG_METHODmacro.请注意,不论如何或在foo法存在,日志输出是输出相同的出口范围是写在完成log对象的实例化以后,在使用前法每DEBUG_METHOD宏。Executiontime执行时间Inthisde
6、buglog,itisalsopossibletogetthemethodexitoutputtoincludetheexecutiontimeoftheloggedmethod(includinganyofitschildren).Thisisdonebystoringthecurrenttimewhenthelogobjectisinstanciated,andthensubtractingthisfromthetimeofdestruction.在此调试日志,也有可能退出该方法得到的输出包括其子女的执行时间的记录方法(包括任何)。这是通过存储当前
7、的时候log对象实例化,然后减去这从毁灭的时间。TherearemanywaystogetatimestampinC++,I'vedecidedtogowiththeclock()methodfoundintime.h.Asincludingthatperticularheadermightnotbepartoftheloggedapplication,itispossibletodisablethetimingcompletely,orrather,ithastobeexplicitlyenabledbydefiningDEBUG_LOG_ENABL
8、E_TIMING.有很多方法可以得到一个在C++时间戳,我决定去与clock()中找到方法ti
此文档下载收益归作者所有