MySQL UDF调试方式debugview的相关方法_Mysql

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

时间: 2024-09-21 08:07:22

MySQL UDF调试方式debugview的相关方法_Mysql的相关文章

MySQL UDF的调试方式 - debugview

debug|mysql MySQL UDF的调试方式 MySQL的UDF实质就是一个不需要设置入口点的动态连接库(*Nix称之为共享库).对于DLL的调试可谓个人有个法.现在我介绍一下一个非常简单的易用的调试方法.这一方法直接利用Windows API,语言无关.开发工具无关.项目类型无关,典型的三无调试方法.并且,我们从这里讨论的调试方法支持远程调试,对于一时无法掌握开发工具原本调试器而又急于寻找程序错误的朋友此方法非常实用! 首先我们需要下载接收端,当然有心人也可以自己写一个.在 http:

MySQL的UDF调试方式

MySQL的UDF实质就是一个不需要设置入口点的动态连接库(*Nix称之为共享库).对于DLL的调试可谓个人有个法.现在我介绍一下一个非常简单的易用的调试方法.这一方法直接利用Windows API,语言无关.开发工具无关.项目类型无关,典型的三无调试方法.并且,我们从这里讨论的调试方法支持远程调试,对于一时无法掌握开发工具原本调试器而又急于寻找程序错误的朋友此方法非常实用! 首先我们需要下载接收端,当然有心人也可以自己写一个.在 http://www.sysinternals.com/ntw2

MySQL内存及虚拟内存优化设置参数_Mysql

mysql 优化调试命令  1.mysqld --verbose --help 这个命令生成所有mysqld选项和可配置变量的列表 2.通过连接它并执行这个命令,可以看到实际上使用的变量的值: mysql> SHOW VARIABLES; 还可以通过下面的语句看到运行服务器的统计和状态指标: mysql>SHOW STATUS: 使用mysqladmin还可以获得系统变量和状态信息: shell> mysqladmin variables shell> mysqladmin ext

MySQL扫盲 -- 授权方式

mysql MySQL扫盲 -- 授权方式 作者:王猛 (HeartIcy@163.com) 很多人都不理解MySQL的授权方式,主要原因是没有中文资料别无其他!我不想嘲笑谁,但是我认为有必要搞清楚这一重要的因素.国际官司我们已经吃亏太多了,我不想这变成笑柄. 当前,MySQL采用双重授权(Dual Licensed),他们是GPL和MySQL AB制定的商业许可协议.如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL.否则,你需要购买MySQLAB

浅谈MySQL的授权方式

很多人都不理解MySQL的授权方式,主要原因是没有中文资料别无其他!我不想嘲笑谁,但是我认为有 必要搞清楚这一重要的因素.国际官司我们已经吃亏太多了,我不想这变成笑柄. 当前,MySQL采用双重授权(Dual Licensed),他们是GPL和MySQL AB制定的商业许可协议.如果你在一 个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL.否则,你需要购买 MySQLAB制定的那个商业许可协议.这里最重要的一点就是要想免费使用MySQL,你所开发的软件必须是

mysql 性能的检查和调优方法_Mysql

在遇到严重性能问题时,一般都有这么几种可能:1.索引没有建好; 2.sql写法过于复杂; 3.配置错误; 4.机器实在负荷不了; 1.索引没有建好 如果看到mysql消耗的cpu很大,可以用mysql的client工具来检查. 在linux下执行 /usr/local/mysql/bin/mysql -hlocalhost -uroot -p 输入密码,如果没有密码,则不用-p参数就可以进到客户端界面中. 看看当前的运行情况 show full processlist 可以多运行几次 这个命令可

c-关于mysql UDF函数库执行无效问题

问题描述 关于mysql UDF函数库执行无效问题 项目里打算对Mysql数据库中某一张表做监控,当表中插入数据是调用linux系统的shell脚本,所以在mysql中写自定义函数调用操作系统命令,在网上找到了相关的UDF包(lib_mysqludf_sys_0.0.3.rar)看到网上有人使用,说没问题,比如这样一篇:http://blog.csdn.net/cnbird2008/article/details/4922078. 但是我使用过后,里面的方法有2个主要的没法用,比如这个___ _

Linux 平台MySQL启动关闭方式总结

  MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二.   1:使用mysqld启动.关闭MySQL服务      mysqld是MySQL的守护进程,我们可以用mysqld来启动.关闭MySQL服务,关于mysqld, MySQL 5.6官方介绍资料如下所示: mysqld, also known as MySQL Server, is the main program that does most of

详解MySQL中的外键约束问题_Mysql

使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程.理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务器端脚本语言,就足以应付对MySQL表所需的各种操作了,尤其是当您使用了快速MyISAM数据库引擎的时候.但是,即使在最简单的情况下,事情也要比我们想象的要复杂得多.下面我们用一个典型的例子进行说明.假设您正在运行一个博客网站,您几乎天天更新,并且该站点允许访问者评论您的帖子. MySQL外键约束条件