zoukankan      html  css  js  c++  java
  • MFC 调试技巧

      The use method of afxDump and TRACE 

     

    #ifdef_DEBUG
    afxDump<<"DumpingmyPerson:\n";
    myPerson->Dump(afxDump);
    afxDump<<"\n";
    #endif

    1)TRACE();/TRACE0();/TRACE1();/TRACE2();/TRACE3();:其用法和C中的printf()函数类似;TRACEn()和TRACE()的区别是前者使用的资源较少,前者中n表示所带参数的个数。使得TRACE可用:Tools-MFCTracer-Enablingtrace。
    2)AfxDump();//其用法和C++中的cout类似;
    3)AfxDump(constCobject*obj);会输出obj的相关信息(属性的值)。
    4)MessageBox();/AfxMessageBox();

    #ifdef_DEBUG
    afxDump<<x;
    #endif
    将结果显示在OutPut,不能在Release状态下。Ctrl+F5似乎无效,F5可以。

    afxDump.SetDepth(1);
    设置深度,如maps,arrays,它只打出有几个可元素,我们用上面的这个函数,它会将所有的内容打出来.
    #ifdef_DEBUG
    chartest[]="0123456789\n";
    afxDump.HexDump("--",(BYTE*)test,11,6);
    #endif
    结果为:
    --303132333435
    --363738390A
    第一个参数,行首的打头字符.
    第二个参数,要打的内容.
    第三个参数,要打的元素个数.
    第四个参数,每行的个数.

    4,TRACE(...),TRACE0,TRACE1,TRACE2,TRACE3也只能在调试时用注意打字符串时有长度限制,包括结束符在内,不超过512个字符.

    5.在Debug状态下
    F9设置断点后,F5到下一个断点,F10下一行,F11进入函数(包括系统函数)内部,Shift+F11出来.
    F5后,Debug菜单有相应的菜单项.
    F5后,View->DebugWindow的子菜单项比较有用.
    Watch查看你指定的变量
    variables显示auot变量,local变量,this的值
    memory显示指定内存地址存储的值
    callstack显示函数调用关系
    registers寄存器的值
    Disabblemble汇编代码

    其实Release下也可调试F5
    Alt+f7工程设置
    c\c++GenerateBrowseinfo选上.
    Debuginfo选Progamedatabaseforeditandcontinue
    LinkGeneratedebuginfo选上
    Linkincrementally选上

    Come from http://blog.csdn.net/banward/archive/2008/09/25/2978680.aspx
  • 相关阅读:
    Java 中的 volatile 关键字
    Java 隐式锁
    导致并发程序出问题的根本原因是什么?
    BZOJ_2434_[Noi2011]阿狸的打字机_AC自动机+出栈入栈序+树状数组
    BZOJ_5368_[Pkusc2018]真实排名_组合数
    CF上的3道小题(2)
    BZOJ_4199_[Noi2015]品酒大会_后缀自动机
    BZOJ_4566_[Haoi2016]找相同字符_后缀自动机
    BZOJ_3172_[Tjoi2013]单词_后缀自动机
    BZOJ_3998_[TJOI2015]弦论_后缀自动机
  • 原文地址:https://www.cnblogs.com/likwo/p/1774351.html
Copyright © 2011-2022 走看看