欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

數(shù)據(jù)庫和存儲(chǔ) ? 來源: MySQL內(nèi)核剖析 ? 2023-09-25 10:34 ? 次閱讀

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

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

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

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

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

set target-async 1

set pagination off

set non-stop on

這一行可以直接啟動(dòng)的時(shí)候就設(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 里面, 如果斷點(diǎn)被某一個(gè)線程命中, 那么只有該線程是停止的, 其他線程繼續(xù) running.. 上圖可以看到只有 Thread 66 是停止的, 其他 Thread 都在運(yùn)行鐘.

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

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

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

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

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

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

這個(gè)時(shí)候可以再切到 Thread 67 讓他去執(zhí)行, 因?yàn)?Thread 66 已經(jīng)斷在一個(gè)地方了. 這個(gè)時(shí)候我們直接讓 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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1383

    瀏覽量

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

    關(guān)注

    7

    文章

    589

    瀏覽量

    34072
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    830

    瀏覽量

    26753

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    gdb調(diào)試器解析

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

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

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

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

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

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

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

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

    /跳出函數(shù)、設(shè)置斷點(diǎn)、查看變量等等。Ubuntu資源充足,可以直接用gdb調(diào)試程序。嵌入式Linux性能弱,一般PC上運(yùn)行源碼和GDB工具,可執(zhí)行文件在開發(fā)板上運(yùn)行。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簡(jiǎn)介交叉編譯器的gdb介紹在學(xué)習(xí)單片機(jī)的時(shí)候我們可以通過集成式IDE 來進(jìn)行調(diào)試,比如MDK、IAR 等。在嵌入式linux 領(lǐng)域是否也可以進(jìn)行
    發(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,會(huì)極大的提高定位效率。 本文簡(jiǎn)單描述了一下L2二次啟動(dòng)的系統(tǒng)如何使用gdb調(diào)試init 首先將gdb打包到系
    的頭像 發(fā)表于 12-26 12:10 ?979次閱讀

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

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

    在ubuntu中調(diào)試GDB

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

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

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

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

    在對(duì)應(yīng)程序目錄中使用下面的命令 gdb test 2、調(diào)試已經(jīng)開始運(yùn)行的程序進(jìn)程 調(diào)試已經(jīng)開始運(yùn)行的程序進(jìn)程,首先先用top命令查看運(yùn)行的程序進(jìn)程的pid如下: 比如我要加載的程序
    的頭像 發(fā)表于 11-09 17:17 ?915次閱讀
    如何使用<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 ?2745次閱讀