91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過GDB non-stop mode調(diào)試MySQL

數(shù)據(jù)庫和存儲 ? 來源: MySQL內(nèi)核剖析 ? 2023-09-25 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過GDB non-stop mode 調(diào)試MySQL, 特別是用于復現(xiàn)死鎖場景, 需要按照一定的并發(fā)順序?qū)懭氩趴梢詷?gòu)造出來, 通過GDB non-stop mode 可以非常方便進行構(gòu)造

但是用法是先開啟 GDB, 然后在 attach mysql_pid 才可以. 不能啟動的時候就 attach 到 mysql pid

可以通過設(shè)置set non-stop on, non-stop mode 來實現(xiàn)gdb 只block 一個thread, 然后其他thread 繼續(xù)執(zhí)行的方法.

In non-stop mode, when a thread stops to report a debugging event, only that thread is stopped;

經(jīng)常需要配合這幾個一起用

set target-async 1

set pagination off

set non-stop on

這一行可以直接啟動的時候就設(shè)置好

gdb —quiet -ex ‘set pagination off’ -ex ‘set target-async on’ -ex ‘set non-stop on’

0f160ade-5b4c-11ee-939d-92fbcf53809c.png

在 non-stop mode 里面, 如果斷點被某一個線程命中, 那么只有該線程是停止的, 其他線程繼續(xù) running.. 上圖可以看到只有 Thread 66 是停止的, 其他 Thread 都在運行鐘.

在 non-stop mode 中, 如果想讓其他所有 Thread 繼續(xù)運行, 需要執(zhí)行 c -a(continue -a), 如果只是執(zhí)行 c(continue), 那么只有當前 thread 運行.

通過 continue 只運行當前 Thread, 就可以切換 Thread, 執(zhí)行 continue, 做到多個 Thread 輪流運行的效果, 用于復雜場景復現(xiàn).

比如這個 example 把斷點打在 do_command 上面, 那么就兩個 client 連接進來執(zhí)行 命令以后, 都停止在了 do_command 上, 這個時候可以按照我們的需求去執(zhí)行哪一個 thread.

0f223eee-5b4c-11ee-939d-92fbcf53809c.png

比如我這里又增加了一個 breakpoint lock_rec_lock, 我想讓 Thread 66 先執(zhí)行, 那么我就t 66, 然后在這里執(zhí)行 continue, 那么就會發(fā)現(xiàn) t 66 跳到下一個斷點.

0f354c5a-5b4c-11ee-939d-92fbcf53809c.png

這個時候可以再切到 Thread 67 讓他去執(zhí)行, 因為 Thread 66 已經(jīng)斷在一個地方了. 這個時候我們直接讓 Thread 67 執(zhí)行完成就變成這樣

0f3b79c2-5b4c-11ee-939d-92fbcf53809c.png

可以看到 Thread 66 還停在這里, 但是 Thread 67 已經(jīng)執(zhí)行結(jié)束了.

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1468

    瀏覽量

    42890
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    646

    瀏覽量

    35684
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    906

    瀏覽量

    29558

原文標題:通過GDB non-stop mode 調(diào)試MySQL

文章出處:【微信號:inf_storage,微信公眾號:數(shù)據(jù)庫和存儲】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    QEMU+GDB調(diào)試ARM程序

    通過GDB調(diào)試代碼的便利性無需贅言。我們直接以調(diào)試meta-hypervisor為示例進行說明。
    的頭像 發(fā)表于 10-08 09:17 ?4725次閱讀

    使用GDB調(diào)試Linux應(yīng)用程序

    本篇講解使用GDB調(diào)試Linux應(yīng)用程序,以下以 `hellowld.c` 為例介紹 GDB調(diào)試入門。
    發(fā)表于 06-27 15:48 ?836次閱讀

    GDB調(diào)試命令手冊

    GDB調(diào)試命令手冊,感興趣的可以下載看看。
    發(fā)表于 11-05 16:36 ?9次下載

    gdb調(diào)試器解析

    3.4 gdb調(diào)試調(diào)試是所有程序員都會面臨的問題。如何提高程序員的調(diào)試效率,更好、更快地定位程序中的問題從而加快程序開發(fā)的進度,是大家都很關(guān)注的問題。就如讀者熟知的Windows下
    發(fā)表于 10-18 13:49 ?1次下載

    GDB調(diào)試命令總結(jié)

    的話,默認是會啟動所有線程。這種模式有一種副作用,如果多個線程都斷在同一個函數(shù),這時候調(diào)試會出問題。這個時候需要打開線程鎖,但打開線程鎖,意味著其它線程不能運行了。(2)non-stop模式(7.0以后
    發(fā)表于 04-02 14:31 ?1931次閱讀

    使用 GDB 調(diào)試多進程程序

    的特點或者其他一些輔助手段來達到目的。此外,GDB 也在較新內(nèi)核上加入一些多進程調(diào)試支持。接下來我們詳細介紹幾種方法,分別是 follow-fork-mode 方法,attach 子進程方法和
    發(fā)表于 04-02 14:33 ?941次閱讀

    Linux應(yīng)用的GDB調(diào)試的原理及過程分析

    GDB調(diào)試是應(yīng)用程序在開發(fā)板上運行,然后在PC機上對開發(fā)板上得應(yīng)用程序進行調(diào)試,PC機運行GDB,開發(fā)板上運行GDBServer。在應(yīng)用程序調(diào)試
    發(fā)表于 03-05 09:44 ?3786次閱讀
    Linux應(yīng)用的<b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試</b>的原理及過程分析

    嵌入式Linux GDB調(diào)試環(huán)境搭建與使用

    /跳出函數(shù)、設(shè)置斷點、查看變量等等。Ubuntu資源充足,可以直接用gdb調(diào)試程序。嵌入式Linux性能弱,一般PC上運行源碼和GDB工具,可執(zhí)行文件在開發(fā)板上運行。PC上通過
    發(fā)表于 11-01 17:59 ?8次下載
    嵌入式Linux <b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試</b>環(huán)境搭建與使用

    Linux嵌入式 gdb VSCode圖形化調(diào)試教程

    文章目錄介紹GDB簡介交叉編譯器的gdb介紹在學習單片機的時候我們可以通過集成式IDE 來進行調(diào)試,比如MDK、IAR 等。在嵌入式linux 領(lǐng)域是否也可以進行
    發(fā)表于 11-02 12:21 ?15次下載
    Linux嵌入式 <b class='flag-5'>gdb</b> VSCode圖形化<b class='flag-5'>調(diào)試</b>教程

    OpenHarmony系統(tǒng)使用gdb調(diào)試init

    。如果能使用gdb調(diào)試init,會極大的提高定位效率。 本文簡單描述了一下L2二次啟動的系統(tǒng)如何使用gdb調(diào)試init 首先將gdb打包到系
    的頭像 發(fā)表于 12-26 12:10 ?1642次閱讀

    ARM平臺如何玩轉(zhuǎn)GDB遠程調(diào)試?

    前言關(guān)于GDB工具GDB工具是GNU項目調(diào)試器,基于命令行使用。和其他的調(diào)試器一樣,可使用GDB工具單步運行程序、單步執(zhí)行、跳入/跳出函數(shù)、
    的頭像 發(fā)表于 09-28 18:17 ?1742次閱讀
    ARM平臺如何玩轉(zhuǎn)<b class='flag-5'>GDB</b>遠程<b class='flag-5'>調(diào)試</b>?

    在ubuntu中調(diào)試GDB

    的 gcc 編譯器即可,注意需要加 -g 選項,才能使用 gdb 調(diào)試 arm-linux-gnueabihf-gcc gdbtest .c -o gdbtest -g //編譯測試程序,注意-g 選項
    的頭像 發(fā)表于 07-27 16:31 ?1924次閱讀
    在ubuntu中<b class='flag-5'>調(diào)試</b><b class='flag-5'>GDB</b>

    GDB調(diào)試工具的原理

    一、GDB調(diào)試工具的原理 1.1 未執(zhí)行進程調(diào)試 啟用gdb調(diào)試運行gdb ./test的時候,
    的頭像 發(fā)表于 11-09 17:04 ?1975次閱讀
    <b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試</b>工具的原理

    如何使用GDB調(diào)試工具

    在對應(yīng)程序目錄中使用下面的命令 gdb test 2、調(diào)試已經(jīng)開始運行的程序進程 調(diào)試已經(jīng)開始運行的程序進程,首先先用top命令查看運行的程序進程的pid如下: 比如我要加載的程序
    的頭像 發(fā)表于 11-09 17:17 ?2265次閱讀
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試</b>工具

    如何使用linux下gdb調(diào)試python程序

    如何使用linux下gdb調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試器)來調(diào)試Python程序。
    的頭像 發(fā)表于 01-31 10:41 ?3956次閱讀