《Mysql應(yīng)用MySQL UDF調(diào)試方式debugview的相關(guān)方法》要點(diǎn):
本文介紹了Mysql應(yīng)用MySQL UDF調(diào)試方式debugview的相關(guān)方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
MySQL的UDF實質(zhì)就是一個不需要設(shè)置入口點(diǎn)的動態(tài)連接庫(*Nix稱之為共享庫).對于DLL的調(diào)試可謂個人有個法.現(xiàn)在我介紹一下一個非常簡單的易用的調(diào)試方法.這一方法直接利用Windows?API,語言無關(guān)、開發(fā)工具無關(guān)、項目類型無關(guān),典型的三無調(diào)試方法.并且,我們從這里討論的調(diào)試方法支持遠(yuǎn)程調(diào)試,對于一時無法掌握開發(fā)工具原本調(diào)試器而又急于尋找程序錯誤的朋友此方法非常實用!?
首先我們需要下載接收端,當(dāng)然有心人也可以自己寫一個.在?http://www.sysinternals.com/ntw2k/freeware/debugview.shtml?.透過debugview手冊我們可以知道這個工具支持win9x/nt系列,并且支持內(nèi)核調(diào)試!由于其調(diào)用的API均只能接收一個char?*?類型參數(shù),所以有些時候我們需要利用其他的函數(shù)有機(jī)組合產(chǎn)生人性可讀提示.?
為了減少復(fù)雜程度簡單的以來自?http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=35166?討論為例,講解我是如何利用這里工具進(jìn)行調(diào)試的.?
1?簡單輸出一行信息,在調(diào)試開始時輸出一條簡單的信息便于我們了解debug到什么地方了.?
在程序代碼中根據(jù)需要加入下邊一行?
OutputDebugStringA("--UDF:my_name()被調(diào)用");?
這樣一來我就知道我定義的my_name被客戶用到了,接著我要關(guān)心返回值如何.?
2?輸出返回值?
輸出返回值方法很多,可以自由組合.自由組合的最終目的是將一個有效的?char?*?類型參數(shù)傳遞給WiNDOWS?API.這里簡單的以C語言字符控制函數(shù)為例.?
例子:?
#include???/*?函數(shù)-?sprintf?*/?
#include??/*?掛接windows?api?*/?
/*?...........省略???*/?
char*?__stdcall?my_name(UDF_INIT?*initid,?UDF_ARGS?*args,?char?*is_null,?char?*error)?
{?
OutputDebugStringA("--UDF:my_name()被調(diào)用");?/*?調(diào)用了?*/?
char?*me?=?"my?name";?
/*----?debuger?start----*/?
????????char?debugermsg[256]={0};?
????????sprintf(debugermsg,?"%s",?me);?
????????OutputDebugStringA(debugermsg);?
????????/*----?debuger?end----*/?
?return?me;?
}?
當(dāng)在程序中加入了類似代碼那么調(diào)試就可以開始了,利用這種方式即便不使用"debuger"方式編譯仍然可以得到所需的調(diào)試信息.?
接收調(diào)試信息?
接收調(diào)試信息只要打開debugview程序即可,程序主窗口可以實時返回所需要的調(diào)試信息.?
其它平臺請自行查閱手冊獲得對應(yīng)的api,利用這種方式調(diào)試方法適當(dāng)并不會造成任何困擾.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5256.html