当前位置:   article > 正文

gdb常用调试命令_gdb -p pid

gdb -p pid

命令

  • gdb -p pid(pid可通过top命令查到)
  • b 函数名(通过函数名加断点)
  • b xxx 行号(通过行号加断点)
  • c (continue,断点后继续运行)
  • p 对象名(查看对象或数据结构参数)
  • gdb xxx.exe core.yyy (查看堆栈)
  • gdb 查看内存:格式: x /nfu
  • gdb启动服务:gdb --args xx.exe [-option]
  • set args 可指定运行时参数。(如:set args 10 20 30 40 50)
  • show args 命令可以查看设置好的运行参数。

gdb查看内存

  • 格式: x /nfu

  • 说明
    x 是 examine 的缩写
    n表示要显示的内存单元的个数
    f表示显示方式, 可取如下值
    x 按十六进制格式显示变量。
    d 按十进制格式显示变量。
    u 按十进制格式显示无符号整型。
    o 按八进制格式显示变量。
    t 按二进制格式显示变量。
    a 按十六进制格式显示变量。
    i 指令地址格式
    c 按字符格式显示变量。
    f 按浮点数格式显示变量。

    u表示一个地址单元的长度
    b表示单字节,
    h表示双字节,
    w表示四字节,
    g表示八字节

堆栈

  • thread apply all bt

锁定当前线程

  • (锁定当前线程):set scheduler-locking off|on|step
  • (忽略信号):handle SIGSEGV nostop noprint pass

打印所有元素

  • set print element 0

查看栈是否溢出(coredump)

  • gdb xx.core 打印出死机的堆栈信息 执行 maintenance info sections (gdb进程时使用info proc mapping)列出core中栈的信息
  • 在线程执行开始的地方(这里堆栈靠上的位置,比如f0、f1可能已经出现越界,找线程执行开始的地方)执行 info reg 找到寄存器地址 64位的是rsp 32位的是esp
  • 根据寄存器地址找到对应的栈段,后减前即为线程对应的栈可用大小,在疑似越界的地方info reg查看寄存器地址可看出是否有越界
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/288058
推荐阅读
相关标签
  

闽ICP备14008679号