MySQL UDF调试方式debugview

书之老蛀虫

书之老蛀虫

2016-01-29 15:08

MySQL UDF调试方式debugview,MySQL UDF调试方式debugview

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)
展开更多 50%)
分享

猜你喜欢

MySQL UDF调试方式debugview

MySQL mysql数据库
MySQL UDF调试方式debugview

MySQL UDF的调试方式 - debugview

MySQL mysql数据库
MySQL UDF的调试方式 - debugview

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL UDF的调试方式 debugview

编程语言 网络编程
MySQL UDF的调试方式 debugview

Windows上的MySQL UDF开发

SQLServer
Windows上的MySQL UDF开发

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在Windows上的MySQL UDF开发应用

编程语言 网络编程
在Windows上的MySQL UDF开发应用

Mysql 插入中文及中文查询 (修改+调试)

编程语言 网络编程
Mysql 插入中文及中文查询 (修改+调试)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用PHP批量生成随机用户名

使用PHP批量生成随机用户名

PHP新手上路(十四)

PHP新手上路(十四)
下拉加载更多内容 ↓