这两天调试了一个诡异的问题,使用unixODBC
连接MySQL
数据库,最后程序core dump
在MySQL client
代码的fill_ird_data_lengths
函数:
void fill_ird_data_lengths(DESC *ird, ulong *lengths, uint fields)
{
......
assert(fields == ird->count);
}
fileds
是一个很离谱的数,一看就像是内存值被破坏了。
经过艰苦的单步调试,最后查出的问题是unixODBC
驱动链接的MySQL
数据库客户端库和程序直接链接的MySQL
数据库客户端库不一样(因为程序还没有完全改完,有一部分code
还会直接调用MySQL
数据库客户端库)。
这个坑一定要记住!