加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用MySQL UDF调试方式debugview的相关方法

发布时间:2020-12-12 00:56:11 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用MySQL UDF调试方式debugview的相关方法》要点: 本文介绍了Mysql应用MySQL UDF调试方式debugview的相关方法,希望对您有用。如果有疑问,可以联系我们。 MySQL的UDF实质就是一个不需要设置入口点的动态连接库(*Nix称之为共享库).对于DLL的调试可

《Mysql应用MySQL UDF调试方式debugview的相关方法》要点:
本文介绍了Mysql应用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,利用这种方式调试方法适当并不会造成任何困扰.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读