欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【MySQL UDF的调试方式 - debugview】,下面是详细的分享!
MySQL UDF的调试方式 - debugview
MySQL UDF的调试方式
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 <stdio.h>
#include <windows.h>
char* __stdcall my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
OutputDebugStringA("--UDF:my_name()被调用");
char *me="my name";
char debugermsg[256]={0};
sprintf(debugermsg, "%s", me);
OutputDebugStringA(debugermsg);
return me;
}
当在程序中加入了类似代码那么调试就可以开始了,利用这种方式即便不使用"debuger"方式编译仍然可以得到所需的调试信息。
接收调试信息
接收调试信息只要打开debugview程序即可,程序主窗口可以实时返回所需要的调试信息。
其它平台请自行查阅手册获得对应的api,利用这种方式调试方法适当并不会造成任何困扰。
以上所分享的是关于MySQL UDF的调试方式 - debugview,下面是编辑为你推荐的有价值的用户互动:
相关问题:怎么查看OutputDebugString输出的信息?debugview
答:楼主这一句: 先启动了debugview 然后按F5运行我的代码。 在开发环境里调试貌似是不行的。 你可以编译了你的程序以后,直接运行你的程序,就好了,不要在开发环境里调试运行。 要是想在开发环境里看调试信息,在开发环境底部的 "输出"标签就可以... >>详细
相关问题:请教各位高手,C++中怎么使用DebugView软件进行程...
答:在程序中用OutputDebugString输出你想要的信息(非字符串变量要先把它转换成字符串),然后字符串前面要加一些用以区分的关键字,比如模块名之类 >>详细
相关问题:VC# 有没有函数可以代替VC++ outputdebugstring()...
答:Debug.WriteLine Method >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
