通过GDB non-stop mode 调试MySQL, 特别是用于复现死锁场景, 需要按照一定的并发顺序写入才可以构造出来, 通过GDB non-stop mode 可以非常方便进行构造
但是用法是先开启 GDB, 然后在 attach mysql_pid 才可以. 不能启动的时候就 attach 到 mysql pid
可以通过设置set non-stop on, non-stop mode 来实现gdb 只block 一个thread, 然后其他thread 继续执行的方法.
In non-stop mode, when a thread stops to report a debugging event, only that thread is stopped;
经常需要配合这几个一起用
set target-async 1
set pagination off
set non-stop on
这一行可以直接启动的时候就设置好
gdb —quiet -ex ‘set pagination off’ -ex ‘set target-async on’ -ex ‘set non-stop on’
在 non-stop mode 里面, 如果断点被某一个线程命中, 那么只有该线程是停止的, 其他线程继续 running.. 上图可以看到只有 Thread 66 是停止的, 其他 Thread 都在运行钟.
在 non-stop mode 中, 如果想让其他所有 Thread 继续运行, 需要执行 c -a(continue -a), 如果只是执行 c(continue), 那么只有当前 thread 运行.
通过 continue 只运行当前 Thread, 就可以切换 Thread, 执行 continue, 做到多个 Thread 轮流运行的效果, 用于复杂场景复现.
比如这个 example 把断点打在 do_command 上面, 那么就两个 client 连接进来执行 命令以后, 都停止在了 do_command 上, 这个时候可以按照我们的需求去执行哪一个 thread.
比如我这里又增加了一个 breakpoint lock_rec_lock, 我想让 Thread 66 先执行, 那么我就t 66, 然后在这里执行 continue, 那么就会发现 t 66 跳到下一个断点.
这个时候可以再切到 Thread 67 让他去执行, 因为 Thread 66 已经断在一个地方了. 这个时候我们直接让 Thread 67 执行完成就变成这样
可以看到 Thread 66 还停在这里, 但是 Thread 67 已经执行结束了.
-
内核
+关注
关注
3文章
1384浏览量
40458 -
调试
+关注
关注
7文章
590浏览量
34112 -
MySQL
+关注
关注
1文章
831浏览量
26779
原文标题:通过GDB non-stop mode 调试MySQL
文章出处:【微信号:inf_storage,微信公众号:数据库和存储】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
gdb调试器解析
在Linux中如何使用gdb调试C程序?
GDB调试命令总结
使用 GDB 调试多进程程序
Linux应用的GDB调试的原理及过程分析
![Linux应用的<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>的原理及过程分析](https://file.elecfans.com/web1/M00/B5/54/pIYBAF5gWW-ARv_SAABcEAzxVmk577.png)
嵌入式Linux GDB调试环境搭建与使用
![嵌入式Linux <b class='flag-5'>GDB</b><b class='flag-5'>调试</b>环境搭建与使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Linux嵌入式 gdb VSCode图形化调试教程
![Linux嵌入式 <b class='flag-5'>gdb</b> VSCode图形化<b class='flag-5'>调试</b>教程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
OpenHarmony系统使用gdb调试init
如何使用GDB调试工具
![如何使用<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>工具](https://file1.elecfans.com/web2/M00/AD/44/wKgaomVMoQ-ALIZ1AAG9PSG5F_o447.jpg)
评论