• 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"在单步执行的时候,只有当前线程会执行;

  • 相关阅读:
    guid与Base64编码互相转换
    xml序列化与反序列化工具
    Win10 15063 开始运行不保存历史记录原因和解决方法
    win10 localhost 解析为 ipv6地址 ::1 的解决办法
    在VisualStudio中应该使用什么字体
    S7-200系列PLC与WINCC以太网通信CP243i的实例
    超棒的 15 款 Bootstrap UI 编辑器
    NuGet学习笔记(转)
    SQLServer公历转农历函数(1900年-2049年)
    WPF 的datagrid 列名中没有显示下划线是怎么回事?
  • 原文地址:https://www.cnblogs.com/jian-99/p/8591774.html
Copyright © 2020-2023  润新知