zoukankan      html  css  js  c++  java
  • GDB常用命令总结

    ptype-------------------------------查看结构体定义
    set print pretty on/off-------------设置结构体显示时的样子
    show print pretty-------------------查看

    show print sevenbit-strings---------查看字符显示
    set print sevenbit-strings on/off-设置

    p $eip------------------------------查看寄存器
    info registers----------------------查看除浮点寄存器以外的全部寄存器
    info all-registers------------------查看全部寄存器

    where-------------------------------查看程序当时运行位置(即执行到哪行)

    info threads----------显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。
    thread ID----------------------------------------------切换当前调试的线程为指定ID的线程。
    break thread_test.c:123 thread all---------------------在所有线程中相应的行上设置断点
    thread apply ID1 ID2 command---------------------------让一个或者多个线程执行GDB命令command。?
    thread apply all command-------------------------------让所有被调试线程执行GDB命令command。
    set scheduler-locking on-------------------------------设置只调试当前线程

    help list-----------------------------------查看list命令帮助
    list----------------------------------------查看当前行附近10行,再次执行查看后10行
    list----------------------------------------查看当前行的前10行
    list linenum--------------------------------查看第linenum行附近10行?
    list numbegin,numend------------------------查看第numbegin行到第numend行
    list function-------------------------------查看function函数附近10行
    list file:linenum---------------------------查看file文件第linenum行附近10行
    list file:function--------------------------查看file文件function函数附近10行
    list *address-------------------------------查看地址为address的符号附近的10行

    break linenum--------------------------------在当前源文件的第linenum行设置断点
    break function-------------------------------在function函数入口处设置断点
    break file:linenum---------------------------在file文件的第linenum行设置断点
    break file:function--------------------------在file文件的function函数入口处设置断点
    break class::function------------------------在类class的function函数入口处设置断点
    break namespace::class::function-------------在命名空间为namespace的类class的function函数的入口处设置断点
    info break-----------------------------------查看断点信息

    run---------------------------------运行程序,可简写为r
    next--------------------------------单步跟踪,函数调用当作一条简单语句执行,可简写为n
    step--------------------------------单步跟踪,函数调进入被调用函数体内,可简写为s
    finish------------------------------退出函数
    until-------------------------------在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体,可简写为u
    continue----------------------------继续运行程序,可简写为c
    stepi或si, nexti或ni ---------------单步跟踪一条机器指令,一条程序代码有可能由数条机器指令完成,stepi和nexti可以单步执行机器指令
    info program------------------------来查看程序的是否在运行,进程号,被暂停的原因

    print-------------------------------打印变量、字符串、表达式等的值,可简写为p?
    p count-----------------------------打印count的值?
    p cou1+cou2+cou3--------------------打印表达式值
    print----------接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,表达式可以是当前程序运行中的const常量、变量、函数等内容。但是GDB不能使用程序中定义的宏。

    命令:x/3uh 0x54320 表示,从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示输出三个单位,u表示按十六进制显示,如:
    x/4uw 45

    输出格式
    一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:
    x 按十六进制格式显示变量。
    d 按十进制格式显示变量。
    u 按十六进制格式显示无符号整型。
    o 按八进制格式显示变量。
    t 按二进制格式显示变量。
    a 按十六进制格式显示变量。
    c 按字符格式显示变量。
    f 按浮点数格式显示变量。

    检查程序内存泄漏工具 valgrind ,例如:

    valgrind --tool=memcheck --leak-check=yes --leak-check=full --track-origins=yes --show-reachable=yes entryMain

  • 相关阅读:
    [APIO2018]Circle selection
    [CF1025D]Recovering BST
    [CF1023D]Array Restoration
    [POI2006]PRO-Professor Szu
    [CF888G]Xor-MST
    可持久化并查集小结
    [国家队集训]最短路
    [POI2012]FES-Festival
    [SDOI2010]所驼门王的宝藏
    洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)
  • 原文地址:https://www.cnblogs.com/hgrical/p/10315472.html
Copyright © 2011-2022 走看看