通过GDB non-stop mode 调试MySQL

💡 原文中文,约1300字,阅读约需3分钟。
📝

内容提要

通过GDB non-stop mode调试MySQL,方便构造复现死锁场景。non-stop mode只停止命中断点的线程,其他线程继续运行。设置non-stop mode可阻塞一个线程,其他线程继续执行。使用continue命令切换线程,实现多个线程轮流运行。根据需求选择执行线程。

🎯

关键要点

  • 通过GDB non-stop mode调试MySQL,方便构造复现死锁场景。
  • 使用GDB时需先开启GDB,然后attach到mysql_pid。
  • 设置non-stop mode可阻塞一个线程,其他线程继续执行。
  • 在non-stop mode中,只有命中断点的线程会停止,其他线程继续运行。
  • 需要配合设置set target-async 1和set pagination off。
  • 可以通过执行c -a命令让所有线程继续运行,c命令只运行当前线程。
  • 通过continue命令可以切换线程,实现多个线程轮流运行。
  • 可以根据需求选择执行特定线程,例如在do_command上设置断点后选择执行的线程。
➡️

继续阅读