前一段领导开发了一个内核的模块,测试的过程中,发现导致MYSQL客户端无法连接服务器。
经过查询文档,追根溯源,终于找到了MYSQL实现链接客户端的代码,在源文件sql-common/client.c里的 CLI_MYSQL_REAL_CONNECT 函数。
但是代码很长,一时半会儿肯定看不明白。这个时候发现,发现代码当中有很多这样的代码:
DBUG_ENTER("mysql_real_connect");
说明只要以调试模式启动MYSQL,就可以跟踪代码的执行。
经过查询文档和测试,只要在 cmake 的时候,增加参数 cmake -WITH_DEBUG=1 就可以了。
然后启动一个MYSQL客户端程序之前,更改一个环境变量:
export MYSQL_DEBUG=d:t:O,/tmp/client.trace
好牛逼啊!我们不禁感叹。之余,学习了一下这个调试模式的具体实现:
在 CMakeList.txt 中,有这么一段代码:
IF(WITH_DEBUG)
SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING ${BUILDTYPE_DOCSTRING} FORCE)
IF(NOT CMAKE_BUILD_TYPE
AND NOT CMAKE_GENERATOR MATCHES "Visual Studio"
AND NOT CMAKE_GENERATOR MATCHES "Xcode")
# This is the case of no CMAKE_BUILD_TYPE