July 13, 2012

[MySQL 调试]DBUG_EXECUTE_IF简介

转载请署名:印风 ———————————————– DEBUG_EXECUTE_IF主要用于当设置了某个关键字key时,执行后面的代码, 可以简单的表示为: DEBUG_EXECUTE_IF(key,  code) 例如在open_and_lock_tables函数中. 5527 if (open_tables(thd, &tables, &counter, flags, prelocking_strategy)) 5528 goto err; 5529 5530 DBUG_EXECUTE_IF(“sleep_open_and_lock_after_open”, { 5531 const char *old_proc_info= thd->proc_info; 5532 thd->proc_info= “DBUG sleep”; 5533 my_sleep(6000000); 5534 thd->proc_info= old_proc_info;}); 5535 5536 if (lock_tables(thd, tables, counter, flags)) 5537 goto err;   那么如何让其生效呢,执行如下语句即可: set session debug=”+d, sleep_open_and_lock_after_open”   这时候当进入这个函数时,在执行完open_tables语句后,就会设置thd的状态为DBUG sleep,再sleep 6秒钟,然后再调用lock_tables函数   […]