chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

通過GDB non-stop mode調試MySQL

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

掃碼添加小助手

加入工程師交流群

通過GDB non-stop mode 調試MySQL, 特別是用于復現死鎖場景, 需要按照一定的并發(fā)順序寫入才可以構造出來, 通過GDB non-stop mode 可以非常方便進行構造

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

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

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’

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 輪流運行的效果, 用于復雜場景復現.

比如這個 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ā)現 t 66 跳到下一個斷點.

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

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

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

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

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

    關注

    4

    文章

    1428

    瀏覽量

    42236
  • 調試
    +關注

    關注

    7

    文章

    618

    瀏覽量

    35222
  • MySQL
    +關注

    關注

    1

    文章

    892

    瀏覽量

    28893

原文標題:通過GDB non-stop mode 調試MySQL

文章出處:【微信號:inf_storage,微信公眾號:數據庫和存儲】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    QEMU+GDB調試ARM程序

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

    使用GDB調試Linux應用程序

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

    GDB調試命令手冊

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

    gdb調試器解析

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

    GDB調試命令總結

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

    使用 GDB 調試多進程程序

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

    Linux應用的GDB調試的原理及過程分析

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

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

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

    Linux嵌入式 gdb VSCode圖形化調試教程

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

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

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

    ARM平臺如何玩轉GDB遠程調試?

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

    在ubuntu中調試GDB

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

    GDB調試工具的原理

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

    如何使用GDB調試工具

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

    如何使用linux下gdb調試python程序

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