您现在的位置:主页 > 数据库 > MySQL >

MySQLUDF调试方式debugview

来源:建站吧 责任编辑:Jzq8 发表时间:2011-12-24 点击:

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,利用这种方式调试方法适当并不会造成任何困扰。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    验证码:点击我更换图片

    推荐图文

    • 备份和拷贝MYSQL数据库
    • MySQL&Perl,便利之合
    • ASP.NET+MySQL简明图示入门
    • MySQL数据库安全配置指南
    • 如何在ASP中连接MySQL数据库
    • MySql数据库插入式的多存储引擎机制
    • 如何做好MySQL查询优化
    • NavicatforMySQL与MySQL-Front详细解析
    • MYSQL错误:Can’topenfile:‘×××.MYI’(errno:145)
    Alexa - 客户服务 - 联系方法 - 招聘信息 - 友情链接 - 网站地图 - TAG标签 - RSS订阅
    Copyright © 2010-2012 JZQ8.COM. 建站吧|建站去吧 版权所有
    冀ICP备09002514号
    冀ICP备09002514号 网络报警 企业法人营业执照 中国互联网协会 支付宝付款 网银在线付款