MySQL UDF調試方式debugview的相關方法

來源:互聯網
上載者:User

MySQL的UDF實質就是一個不需要設定進入點的動態串連庫(*Nix稱之為共用庫)。對於DLL的調試可謂個人有個法。現在我介紹一下一個非常簡單的易用的調試方法。這一方法直接利用Windows API,語言無關、開發工具無關、項目類型無關,典型的三無調試方法。並且,我們從這裡討論的調試方法支援遠端偵錯,對於一時無法掌握開發工具原本調試器而又急於尋找程式錯誤的朋友此方法非常實用!
首先我們需要下載接收端,當然有心人也可以自己寫一個。在 http://www.sysinternals.com/ntw2k/freeware/debugview.shtml 。透過debugview手冊我們可以知道這個工具支援win9x/nt系列,並且支援核心調試!由於其調用的API均只能接收一個char * 型別參數,所以有些時候我們需要利用其他的函數有機組合產生人性可讀提示。
為了減少複雜程度簡單的以來自 http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=35166 討論為例,講解我是如何利用這裡工具進行調試的。

1 簡單輸出一行資訊,在調試開始時輸出一條簡單的資訊便於我們瞭解debug到什麼地方了。
在程式碼中根據需要加入下邊一行
OutputDebugStringA("--UDF:my_name()被調用");
這樣一來我就知道我定義的my_name被客戶用到了,接著我要關心傳回值如何。

2 輸出傳回值
輸出傳回值方法很多,可以自由組合。自由組合的最終目的是將一個有效 char * 型別參數傳遞給WiNDOWS API。這裡簡單的以C語言字元控制函數為例。
例子:
#include /* 函數- sprintf */
#include /* 掛接windows api */
/* ...........省略 */
char* __stdcall my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
OutputDebugStringA("--UDF:my_name()被調用"); /* 調用了?*/
char *me = "my name";
/*---- debuger start----*/
char debugermsg[256]={0};
sprintf(debugermsg, "%s", me);
OutputDebugStringA(debugermsg);
/*---- debuger end----*/
return me;
}
當在程式中加入了類似代碼那麼調試就可以開始了,利用這種方式即便不使用"debuger"方式編譯仍然可以得到所需的調試資訊。
接收調試資訊
接收調試資訊只要開啟debugview程式即可,程式主視窗可以即時返回所需要的調試資訊。
其它平台請自行查閱手冊獲得對應的api,利用這種方式調試方法適當並不會造成任何困擾。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.