相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 285.1 kb
PDF (A4)- 286.0 kb


MySQL连接器/ c++ 1.1开发者指南/连接器/ c++调试跟踪

第八章连接器/ c++调试跟踪

尽管可以使用调试器来调试应用程序的一个特定的实例,您可能会发现它有利于使调试连接器的痕迹。一些问题发生随机使得他们难以调试使用调试器。在这种情况下,调试痕迹和协议文件更有用,因为它们允许您跟踪您的程序的所有实例的活动。

连接器/ c++可以写两个跟踪文件:

  1. 一个MySQL客户端库生成的跟踪文件

  2. 内部生成的跟踪文件连接器/ c++

第一个跟踪文件可以生成由底层MySQL客户端库(libmysqlclient)。要启用该跟踪,连接器调用mysql_debug ()C API函数内部。因为只有调试版本的MySQL客户端库能够编写一个跟踪文件,编译连接器/ c++对一个调试版本的库来使用这个跟踪。跟踪显示内部对象的内部函数调用和地址如下所示:

> mysql_stmt_init | > _mymalloc | |进入:大小:816 | |退出:ptr: 0 x68e7b8 | < _mymalloc | > init_alloc_root | |进入:根:0 x68e7b8 | | > _mymalloc | | |进入:大小:2064 | | |退出:ptr: 0 x68eb28 […]

第二个跟踪是连接器/ c++内部跟踪。它是可用的调试和nondebug构建连接器的只要你有在编译时启用跟踪模块。默认情况下,跟踪功能不可用并调用跟踪功能是由预处理程序删除。要启用跟踪模块,配置连接器/ c++和-DMYSQLCPPCONN_TRACE_ENABLE = 1CMake选择。

编译连接器启用了跟踪功能的原因两个额外的跟踪函数调用每个连接器函数调用。例如:

|正:跟踪启用< MySQL_Connection:: setClientOption > MySQL_Prepared_Statement:: setInt |正:这= 0 x69a2e0 | > MySQL_Prepared_Statement:: checkClosed | < MySQL_Prepared_Statement: checkClosed | < MySQL_Prepared_Statement: setInt […]

经营自己的基准,找出多少会影响应用程序的性能。

一个简单的测试使用一个循环运行30000插入SQL语句显示实时无显著影响。此应用程序的两个变体使用跟踪启用和跟踪禁用版本的连接器做得都很好。运行时实时测量没有明显影响,只要写一个调试跟踪没有启用。然而,会有不同的应用程序中所花费的时间。在编写调试跟踪时,I / O子系统可能成为一个瓶颈。

总之,使用连接器构建启用了跟踪。Trace-enabled版本可能会导致更高的CPU使用率即使整个应用程序的运行时是没有显著影响。

的例子例子/ debug_output.cpp演示了如何激活在程序调试的痕迹。目前他们只能通过API调用被激活。跟踪每个连接的基础上控制。您可以使用setClientOption ()法连接对象的激活和禁用跟踪。MySQL客户端库跟踪总是写其跟踪到一个文件中,而连接器将协议消息写入标准输出。

sql:司机*司机;int on_off = 1;/ *使用驱动程序创建一个连接* /驱动程序= get_driver_instance ();std:: auto_ptr < sql:连接>反对(驱动程序- >连接(主机、用户通过);/ *激活调试跟踪的MySQL客户端库(C API)只能与一个MySQL客户端库的调试版本!* / con - > setClientOption (“libmysql_debug”、“d: t O, client.trace”);/ *连接器/ c++跟踪可以如果你有编译驱动程序使用cmake -DMYSQLCPPCONN_TRACE_ENABLE: BOOL = 1 * / con - > setClientOption (“clientTrace”, &on_off);