• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            穩(wěn)定盈利的期貨交易方法-量化趨勢(shì)交易

            alantop -專業(yè)量化投資者

            愛好:量化投資,逆向工程,滲透
            隨筆 - 595, 文章 - 0, 評(píng)論 - 921, 引用 - 0
            數(shù)據(jù)加載中……

            調(diào)試程序的一種方法:

            用了一下dbwin很方便。

            下載的地方: http://dilascia.com/TraceWin.htm

            我用vc6, 所以下載 3.0

            用的時(shí)候非常方便,在使用的文件前#include "TraceWin.h"

            這樣,后afxDump和Trace的字符串,都輸入到TraceWin.exe這個(gè)程序中了。

            調(diào)試ole, c/s的程序非常方便。



            后面附上源碼:

            ////////////////////////////////////////////////////////////////
            //?TraceWin?Copyright?1995-1999?Paul?DiLascia
            //?If?this?program?works,?it?was?written?by?Paul?DiLascia.
            //?If?not,?I?don't?know?who?wrote?it.
            //
            //?NOTE:?If?you're?using?PixieLib,?you?don't?need?to?include?this?file.
            //?It's?already?included?by?the?library.
            //
            //?***************************************************************************
            //?TraceWin?is?a?tool?that?displays?MFC?diagnostic?(afxDump,?TRACE)?output
            //?in?the?window?of?the?TraceWin?applet.
            //
            //?To?use?TraceWin,?you?must?#include?this?file?somewhere?in?your?main?program
            //?file?(typically?where?you?implement?your?CWinApp).?Since?this?file?contains
            //?code,?you?should?#include?it?in?only?once--i.e.?NOT?in?StdAfx.h--or?you'll
            //?get?multiply-defined?symbol?errors?in?the?linker.?This?file?contains?an
            //?auto-initializing?static?variable?that?works?in?most?cases;?but?you?may?miss
            //?some?TRACE?output?from?constructors?of?static?objects.?If?so,?you?can
            //?manually?call?PxlTraceInit?before?your?first?TRACE?call.
            //
            //?To?see?the?output,?you?also?need?the?TraceWin?applet,?TraceWin.exe,?which
            //?you?can?download?http://pobox.com/~dilascia
            //
            //?***************************************************************************
            //
            #ifdef?_DEBUG

            //?Window?class?name?used?by?the?main?window?of?the?TRACEWIN?applet.
            #define?TRACEWND_CLASSNAME?_T("TraceWin?TRACE?Window")
            #define?OLDTRACEWND_CLASSNAME?_T("MfxTraceWindow")?//?backwards?compat

            //?ID?sent?as?COPYDATASRUCT::dwData?to?identify?the?WM_COPYDATA?message
            //?as?coming?from?an?app?using?TraceWin.
            #define?ID_COPYDATA_TRACEMSG?MAKELONG(MAKEWORD('t','w'),MAKEWORD('i','n'))

            //////////////////
            //?CFileTrace?is?a?CFile?that?"writes"?to?the?trace?window
            //
            class?CFileTrace?:?public?CFile?{
            ????DECLARE_DYNAMIC(CFileTrace)
            ????CFileTrace()?
            {?m_strFileName?=?_T("Mfx?File?Tracer");?}
            ????
            static?BOOL?autoInit;
            ????
            virtual?void?Write(const?void*?lpBuf,?UINT?nCount);
            public:
            ????
            static??BOOL?Init();????
            }
            ;
            IMPLEMENT_DYNAMIC(CFileTrace,?CFile)

            //////////////////
            //?Override?to?write?to?TraceWin?applet?instead?of?file.
            //
            void?CFileTrace::Write(const?void*?lpBuf,?UINT?nCount)
            {
            ????
            if?(!afxTraceEnabled)
            ????????
            return;????//?MFC?tracing?not?enabled

            ????HWND?hTraceWnd?
            =?::FindWindow(TRACEWND_CLASSNAME,?NULL);
            ????
            if?(hTraceWnd==NULL)
            ????????hTraceWnd?
            =?::FindWindow(OLDTRACEWND_CLASSNAME,?NULL);
            ????
            if?(hTraceWnd)?{
            ????????
            //?Found?Trace?window:?send?string?with?WM_COPYDATA
            ????????
            //?Must?copy?to?make?me?the?owner?of?the?string;?otherwise
            ????????
            //?barfs?when?called?from?MFC?with?traceMultiApp?on
            ????????
            //
            ????????static?char?mybuf[1024];

            #ifdef?_UNICODE
            ????????BOOL?bDefCharUsed;
            ????????::WideCharToMultiByte(CP_ACP,
            0,LPCWSTR(lpBuf),
            ????????????
            -1,?mybuf,?1024,?NULL,?&bDefCharUsed);
            #else
            ????????memcpy(mybuf,?lpBuf,?nCount);
            #endif

            ????????COPYDATASTRUCT?cds;
            ????????cds.dwData?
            =?ID_COPYDATA_TRACEMSG;
            ????????cds.cbData?
            =?nCount;
            ????????cds.lpData?
            =?mybuf;
            ????????CWinApp
            *?pApp?=?AfxGetApp();
            ????????HWND?hWnd?
            =?pApp???pApp->m_pMainWnd->GetSafeHwnd()?:?NULL;
            ????????::SendMessage(hTraceWnd,?WM_COPYDATA,?(WPARAM)hWnd,?(LPARAM)
            &cds);
            ????}

            ????
            //?Also?do?normal?debug?thing
            ????::OutputDebugString((LPCTSTR)lpBuf);
            }


            /////////////////
            //?Initialize?tracing.?Replace?global?afxDump.m_pFile?with?CFileTrace?object.
            //?In?VC?5.0,?you?shouldn't?need?to?call?this,?since?it's?called?from?an
            //?auto-initializing?static?object?autoInit?below.?But?if?you?don't?see
            //?any?TRACE?output?in?the?TraceWin?window,?you?should?try?calling
            //?PxlTraceInit?any?time?before?your?first?TRACE?message.
            //
            BOOL?CFileTrace::Init()
            {
            ????
            if?(afxDump.m_pFile==NULL)?{
            ????????
            //?Initialize?tracing:?replace?afxDump.m_pFile?w/my?own?CFile?object
            ????????
            //
            ????????
            //?It's?important?to?allocate?with?"new"?here,?not?a?static?object,
            ????????
            //?because?CFileTrace?is?virtual--i.e.,?called?through?a?pointer?in
            ????????
            //?the?object's?vtbl--and?the?compiler?will?zero?out?the?virtual
            ????????
            //?function?table?with?a?NOP?function?when?a?static?object
            ????????
            //?goes?out?of?scope.?But?I?want?my?CFileTrace?to?stay?around?to
            ????????
            //?display?memory?leak?diagnostics?even?after?all?static?objects
            ????????
            //?have?been?destructed.?So?I?allocate?the?object?with?new?and
            ????????
            //?never?delete?it.?I?don't?want?this?allocation?to?itself?generate
            ????????
            //?a?reported?memory?leak,?so?I?turn?off?memory?tracking?before?I
            ????????
            //?allocate,?then?on?again?after.
            ????????
            //
            ????????BOOL?bEnable?=?AfxEnableMemoryTracking(FALSE);
            ????????afxDump.m_pFile?
            =?new?CFileTrace;
            ????????AfxEnableMemoryTracking(bEnable);
            ????????
            return?TRUE;
            ????}

            ????
            return?FALSE;
            }


            //////////////////
            //?This?object?does?nothing?but?call?CFileTrace::Init,?so?all?you?have?to
            //?do?is?#include?this?file.?Because?afxDump?is?defined?in?a?module?with
            //
            //?#pragma?init_seg(lib)
            //
            //?afxDump?gets?initialized?before?the?"user"?segment?which?is?where?your
            //?app?(and?autoInit)?is?by?default.?If?you?need?to?use?init_seg(lib),
            //?or?you?have?other?objects?whose?constructors?call?TRACE?that?get
            //?initialized?before?CFileTrace::bInitialized,?you?will?have?to?call
            //?CFileTrace::Init?yourself,?before?your?first?TRACE?statement.
            //
            BOOL?CFileTrace::autoInit?=?CFileTrace::Init();

            //?This?symbol?defined?so?you?can?call?it?and?have?it
            //?compile?to?nothing?in?non-debug?build
            #define?PxlTraceInit()?CFileTrace::Init();

            #else

            #define?PxlTraceInit()

            #endif?//?_DEBUG

            posted on 2006-05-07 15:57 AlanTop 閱讀(1309) 評(píng)論(4)  編輯 收藏 引用 所屬分類: C++

            評(píng)論

            # re: 調(diào)試程序的一種方法:  回復(fù)  更多評(píng)論   

            這個(gè)還不是最方便的

            最簡(jiǎn)單的方法是使用DebugView,不用改代碼,就可以直接看到調(diào)試輸出了
            2006-05-08 09:11 | 小明

            # re: 調(diào)試程序的一種方法:  回復(fù)  更多評(píng)論   

            小明,說得不錯(cuò),我一般還要對(duì)OutputDebugString進(jìn)行一些封裝,并增加一個(gè)調(diào)試宏,這樣在Release版本中,就沒有任何的輸出了,很方便!
            2006-05-08 22:40 | vgoo

            # re: 調(diào)試程序的一種方法:  回復(fù)  更多評(píng)論   

            方法很多,寫到一個(gè)console窗口里面也是可以的。
            quake的做法是自己寫了一個(gè)os無關(guān)的console類,無論在windows上還是linux,mac都可以出trace
            2006-05-10 12:38 |

            # re: 調(diào)試程序的一種方法:  回復(fù)  更多評(píng)論   

            不曉得有不有試過 XTRACE
            可以在release 下查看輸出的
            2006-05-15 16:06 | 代李
            亚洲精品高清久久| 97久久精品国产精品青草| 欧美日韩精品久久久免费观看| 欧美亚洲日本久久精品| 亚洲va久久久噜噜噜久久| 久久本道伊人久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产精品福利一区二区久久| 99久久99久久精品国产| 久久精品无码一区二区WWW| 久久精品国产99国产电影网| 日本久久久久久久久久| 久久不见久久见免费视频7| 久久亚洲中文字幕精品一区四| 无码精品久久久天天影视| 久久久久久国产a免费观看不卡| 亚洲国产精品无码久久一区二区| 99久久国产亚洲高清观看2024 | 丰满少妇高潮惨叫久久久| 久久se这里只有精品| 久久99国产精品尤物| 精品久久久久成人码免费动漫| 老司机国内精品久久久久| 久久天天躁狠狠躁夜夜2020一| 国产精品欧美久久久久天天影视| 久久人人爽人人爽人人片AV不 | 国产精品美女久久久m| 久久中文字幕人妻熟av女| 天天综合久久久网| 久久国产免费观看精品| 久久久久成人精品无码中文字幕 | 亚洲欧美日韩精品久久亚洲区| 韩国三级中文字幕hd久久精品| 国产成人精品久久一区二区三区 | 久久久久免费看成人影片| 一本久道久久综合狠狠躁AV| 久久久久久国产a免费观看不卡 | 久久久久国产日韩精品网站| 亚洲狠狠久久综合一区77777| 99久久无码一区人妻| 久久夜色精品国产亚洲|