zoukankan      html  css  js  c++  java
  • gdb常用的调试命令

    首先将源代码编译、链接生成debug版本的可执行文件,然后通过‘gdb  debug版本的可执行文件名’进入调试模式。

    a) 单进程、单线程基础调试命令

    l    显示main函数所在的文件的源代码

    list  filename:num   显示filename文件num行上下的源代码

    b  linenum           给指定行添加断点

    b  funname           给指点函数的第一有效行添加一个断点

    info  break          显示断点信息

    delete  断点号       删除指定断点

    disable  断点号      将断点设定为无效的,

    如果不加断点号,将所有断点设置为无效

    enable   断点号      将断点设定为有效的

    如果不加断点号,将所有断点设置为有效

    r(run)              运行程序   

    n(next)              单步执行

    c (continue)         继续执行,直接执行到下一个断点处

    s                      进入将要被调用的函数中执行

    finish                 跳出函数

    q                      退出调试

    p   val                打印变量val的值

    p   &val               打印变量val的地址

    p   a+b                打印表达式的值

    p   arr(数组名)      打印数组所有元素的值

    p   *parr@len          用指向数组的指针打印数组所有元素的值   

    x  /nfu   addr         打印addr表示的内存存储值

    n :  是一个正整数,表示显示内存的长度

    f :  表示显示的格式, x 十六进制; d  十进制; o  八进制

                           t  二进制;  c  字符;  f  浮点数

    u:  表示从当前地址向后请求的字节数,默认4bytes,可以指定:

         b 单字节     h 双字节     w 四字节     g 八字节   

     display         自动显示,参数和p命令一样

     info  display   显示自动显示信息

     undisplay + 自动显示编号   删除指定的自动显示

     ptype   val      显示变量类型

     bt               显示函数调用栈

    b) 多进程调试命令

    (gdb)set  follow-fork-mode mode

    mode 可以选择parent或者child,即:选择调试那个进程。

    注意:未被选择的进程会直接执行结束。

    c) 多线程调试命令

    a)  利用info threads查看线程信息;

            b)  thread id 调试目标id指定的线程;

           c)  set scheduler-locking  off | on | step;

              “off”表示不锁定任何线程;

              “on”只有当前被调试的线程继续运行;

               "step"在单步执行的时候,只有当前线程会执行;

  • 相关阅读:
    【技术评网】说说豆瓣的URL设计
    在这一刻,还是忍不住满眼泪水
    装Sybase,装WAS 6.1的时候报错java.exe损坏的图象
    JasperRepor导出报表通用类
    XSS跨站攻击
    sql 脚本
    解决在无线网络下本机无法连接linux(红帽)虚拟机问题
    pl /sql导入导出表结构,表数据,sql脚本
    asp.net关于WEB端用户重复提交问题。禁用服务器控件按钮问题。
    MQ命令学习总结大全MQ常用命令
  • 原文地址:https://www.cnblogs.com/jian-99/p/8591774.html
Copyright © 2011-2022 走看看