• gdb 常用指令備忘錄


    gdb <ExeFile>

    -q 啟動時不要印版本訊息

    file <Exefile> 指定debug的執行檔

    set var <var>=<xx> 設var等於xx

    set args <para> 設定main()參數

    show args 顯示args的內容

    layout src 分割視窗顯示程式碼

    set listsize <n> 設定使用list指令一次列出n行

    start 執行程式,停在main()的第一行

    r (run) 執行程式

    n (next)執行下一列,不會進入call funtion()

    s (step)行下一步,會進入call funtion()

    c (continue)執行到下一個中斷點停止

    u (until) 跑完迴圈

    按 [Enter] 可重覆執行上個指令

    l (list) 列出當前位置的上下 5 行的程式碼

    l <n> 列出第n行上下 5 行的程式碼

    l <n,m> 列出第n~m行的程式碼

    l <FuncName> 列出函數程式碼

    p <var> (print)查看變數的內容 

    p <var>[n]@m 查看陣列索引n~m的內容

    p *argv@argc 查看 main() 函式裡參數內容

    p <var>=<xx> 設var等於xx

    p <func> 查看function位址

    whatis <var> 查看變數的型態

    x/s <*var> 查看指標所指的字串

    b <n> (breakpoint)設中斷點在第n行

    b <FuncName> 設中斷點在某function

    b <n> if i==5 設定條件中斷點

    watch <var> 觀察某個變數的內容

    i <b> (info)查看中斷點訊息(和command)

    i variables 列出目前scope所可見的global和local變數

    locals 查看所有區域變數的內容

    i frame

    display 每次遇到中斷時,顯示變數的內容

    display <var>

    undisplay 關閉自動顯示變數的內容

    ena (enable) 暫時開啟某功能

    dis <display> <2> (disable) 暫時取消顯示第二個變數的內容

    dis <b> <2> 暫時取消編號2的中斷點

    d <n> (delete) clear 刪除編號n的中斷點

    bt <n>(backtrace) 追蹤堆疊,顯示上層所有 frame 的簡略資訊

    f (frame) 顯示正在執行的行數、副程式名稱、及其所傳送的參數等等

    f <n> 顯示上n層的 frame 訊息caller

    up <n> 回到上n層的frame

    do (down)跳到下層的frame

    ret (return)終止執行該function,回上一層frame的呼叫點

    fin (finish)執行完該function,回上一層frame的呼叫點

    void foo2()
    {
        ... //frame 0 目前執行到這邊
    }
    
    void foo1()
    {
        foo2 //frame 1
    }
    
    main()
    {
        foo1(); //frame 2
    }

    command <n> 第n個中斷點時,執行指令動作

    Type commands for when breakpoint 1 is hit, one per line.
    End with a line saying just "end".
    >p i                # 顯示 i 的內容
    >p a[i]             # 顯示 a [i]
    >c                  # 然後續繼執行
    >end                # 輸入完成

    attach <pid> debug一個已經正在執行的程式

    detach

    shell <cmd> 執行終端機指令

    Kill 結束正在debug的程式

    q 離開gdb

    help <cmd> 查詢指令

    strip ExeFile 清除程式debug訊息

    參考網址:

    1. Debugging with GDB (入門篇) - Study-Area

    2. Linux 除錯利器 - GDB 簡介-今天的 Tetralet 又在唧唧喳喳了

    3. GDB常用指令-Hsian Studio

    4. gdb 初步心得-fcamel 技術隨手記

    5. gdb常用功能筆記-碼機的強迫解說教室

    6. gdb常用命令-gnuhpc的专栏

    7. Linux C编程一站式学习-第 10 章 gdb

  • 相关阅读:
    字符匹配算法之KMP
    rabbitmq_hearbeat
    rabbitmq_config
    postgres SQL编译过程
    postgres启动过程分析
    postgres源码目录结构
    Js两种post方式(转)
    PHP-MySQL,PHP-MySQLi,PDO的差异
    CSS属性中Display与Visibility的不同
    PHP中include路径修改
  • 原文地址:https://www.cnblogs.com/yijay/p/3638861.html
Copyright © 2020-2023  润新知