|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。debug|mysql
MySQLUDF的调试体例
MySQL的UDF本色就是一个不必要设置出口点的静态毗连库(*Nix称之为共享库)。关于DLL的调试可谓团体有个法。如今我先容一下一个十分复杂的易用的调试办法。这一办法间接使用WindowsAPI,言语有关、开辟工具有关、项目范例有关,典范的三无调试办法。而且,我们从这里会商的调试办法撑持远程调试,关于一时没法把握开辟工具底本调试器而又急于寻觅程序毛病的伴侣此办法十分有用!
起首我们必要下载吸收端,固然故意人也能够本人写一个。在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*范例参数传送给WiNDOWSAPI。这里复杂的以C言语字符把持函数为例。
例子:
#include<stdio.h>/*函数-sprintf*/
#include<windows.h>/*挂接windowsapi*/
/*...........省略*/
char*__stdcallmy_name(UDF_INIT*initid,UDF_ARGS*args,char*is_null,char*error)
{
OutputDebugStringA("--UDF:my_name()被挪用");/*挪用了?*/
char*me="myname";
/*----debugerstart----*/
chardebugermsg[256]={0};
sprintf(debugermsg,"%s",me);
OutputDebugStringA(debugermsg);
/*----debugerend----*/
returnme;
}
当在程序中到场了相似代码那末调试就能够入手下手了,使用这类体例即使不利用"debuger"体例编译仍旧能够失掉所需的调试信息。
吸收调试信息
吸收调试信息只需翻开debugview程序便可,程序主窗口能够及时前往所必要的调试信息。
别的平台请自行查阅手册取得对应的api,使用这类体例调试办法得当其实不会形成任何困扰。
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。 |
|