zoukankan      html  css  js  c++  java
  • linux下dbg

    b bcm_petra_oam_endpoint_action_set 打断点
    n 下一步执行
    c 执行
    d 取消断点
    p *指针 或者变量名 打印指针 结构体 变量值

    【文档】

    GDB使用速查                                                         

    启动... 1

    设置断点... 1

    跟踪执行... 2

    调用堆栈... 2

    查看信息... 2

    多线程,多进程... 2

    其他... 3

           附录:《GDB用户使用手册

    启动 [详细]

    1.    通过gdb启动程序:gdb 可执行文件,然后调用run,启动程序。另外有一个start命令,在main函数入口处断住

    2.    连到已经运行的程序:gdb

                                       attach 进程ID

                                       (进程ID可以通过ps –a查看)

    3.    退出gdb调试:detach

    设置断点 [详细]

    1.         函数断点:break 函数名

    2.         文件断点:break 文件名:行号

    3.         条件断点:break … if 条件或者通过condition断点号 条件修改已经存在的断点

    4.         跳过n次后断住:ignore 断点号 count

    5.         一次性断点:tbreak

    6.         多函数断点:rbreak regex (regex为函数名的正则表达式)

    7.         硬件写断点:watch 变量或表达式(该表达式值被修改时断)如:watch *(int*)0xbfbdd5c8

    8.         硬件读断点:rwatch 变量或表达式(该变量读取时断)

    9.         硬件读写断点:awatch 变量或表达式 (表达式读写时断)

    10.     由于硬件断点需要硬件支持,在不支持硬件断点的情况下,watch会使用软件模拟,可以通过set can-use-hw-watchpointsshow can-use-hw-watchpoints设置或查看是否使用硬件断点

    11.     查看所有断点:info break, info watchpoints

    12.     删除断点:1.  clear 函数名,2.  clear 文件名:行号  3delete (删除所有断点)等

    13.     使用和去使能断点: enable [breakpoints] [range...]disable [breakpoints] [range...]

    14.     断点后执行一段程序:commands 断点号

    ... 执行程序...

    end

    跟踪执行 [详细]

    1.       继续执行:continue

    2.       执行-进入(step in本行或多行):step 或者执行多个语句(行) step 行数

    3.       执行-跳过(step over本行或多行):next 或者执行多个语句(行) next 行数

    4.       执行跳到指定行:advance 行号

    5.       退出循环:until

    6.       返回上一级函数(step out):finish

    7.       机器指令级别执行:stepinexti

    调用堆栈 [详细]

    1.         查看调用堆栈: backtrace(bt或者bt full 或者bt 堆栈编号

    2.         进入指定堆栈:frame 堆栈编号,或者frame 地址

    3.         上升或者下降堆栈级别:up n或者down n

    4.         查看当前栈信息:info frame,info args(参数信息),info locals局部变量

    查看信息 [详细]

    1.    info program:查看当前程序状态(如进程已停止,显示停止原因)

    2.    查看变量或者表达式:print /格式表达式

           查看格式:x 16进制 d有符号 u无符号 o八进制 t 二进制 a 地址(包括符号表信息) c 字符 f 浮点数

    3.    将指针转换为数组查看:print *指针@长度

    4.    查看结构体数组的某个字段      set$i=0

    p dtab[$i++]->fv

    回车

    5.         查看内存:x/nfu 地址,其中n表示重复次数 f表示格式 u表示单位,u可以为b一字节  h两字节 w四字节 g八字节

    6.         自动查看:每次断点后自动显示该表达式:display (参数与print类似)

    7.         查看寄存器:print $寄存器名称 ,如print $pc

    8.         查看源代码:list 行号list函数名,list文件名:行号

    9.         查看所有断点info breakpoints,info watchpoints

    多线程,多进程 [详细]

    1.         查看所有线程信息:info threads

    2.         切换到指定线程:thread 线程号

    3.         在指定线程(或所有线程)执行命令:thread apply [threadno]或[all] 执行命令 (如常用thread apply all bt查看进程中所有线程调用堆栈)

    4.         在指定线程设置断点:break 断点信息 thread 线程号

    5.         多进程相关内容总是没看到预期效果,还望牛人指导:)

    其他

    1.       动态修改变量:printf 变量名=

    2.       调用函数:call 表达式或者printf表达式,表达式中可以有函数调用

    3.       执行shell命令:shell 命令参数,特别的make,pwd等可以直接执行,其效果相当于shell make 参数


    【参考】

    https://cloud.tencent.com/developer/article/1022820

  • 相关阅读:
    数论-FTT 和 NTT
    数论-FFT高精度乘法
    树链剖分-模板题 HAOI2015
    图论-最小生成树模板
    图论-次短路求法
    图论-某图论专练 Round3 (April, 2018)
    动规-某动规专练 Round1 (April, 2018)
    动规-某动规专练 Round2 (April, 2018)
    Java IO: 并发IO
    Java IO: Reader And Writer
  • 原文地址:https://www.cnblogs.com/atoman/p/11969290.html
Copyright © 2011-2022 走看看