zoukankan      html  css  js  c++  java
  • 1-断点调试

    断点

    1.普通断点

    break命令创建程序执行到指定行停止;

    2.观察断点

     watch命令创建,观察变量或表达式的值,一旦观测对象发生变化,程序停止执行;

    1. 观察断点分为硬件观察断点和软件观察断点
    2. 硬件观察断点把变量放入寄存器中,不影响程序执行效率;软件观察断点则是单步执行程序,影响程序运行效率
    3. rwatch和awatch只能创建硬件观察断点,如果系统不支持或创建不成功,会打印信息
    info watchpoints             // 查看设定的观察断点
    watch num                 // 监控的num发生改变,就停止执行。读取num不会停止执行
    rwatch num               // 程序中出现读取num,就停止执行
    awatch num               // 程序中读取或改变num,就停止执行

     3.捕捉断点

     catch命令创建监控某一事件发生,停止运行程序

    1. 使用catch断点,要求gcc版本高于4.8
    2. 当 catch 命令捕获到指定的 event 时,程序暂停执行的位置往往位于某个系统库(例如 libstdc++)中。通过执行 up 命令,即可返回发生 event 事件的源代码处。
    3. catch无法捕获交互引发的异常
    catch event                   // event 参数表示要监控的具体事件
    catch throw  [exception]          // 抛出异常,如 catch throw int
    catch [exception]                // 捕获异常,如 catch int
    catch load [regexp]             // 加载动态库, 如 catch load libstdc++.so.6
    catch unload [regexp]           // 卸载动态库, 如 catch unload libstdc++.so.6
     
    tcatch                   // 和catch作用相同,catch永久监控,tcatch紧监控一次

     4.用法示例

    /* 设置断点 */
    (gdb) b 1
    Breakpoint 1 at 0x1189: file main.c, line 2.
    
    (gdb) watch num
    Hardware watchpoint 2: num
     
    (gdb) catch throw int
    Catchpoint 3 (throw)
    
    /* 查看断点 */ info breakpoint [n] // 查看普通断点 info watchpoint [n] // 查看观察断点 info break [n] i b [n] // 查看第n个断点
    /* 删除断点 */ clear location // 参数 location通常为某一行代码的行号或者某个具体的函数名 delete [num] // 参数 num 为指定断点的编号, 不写num会删除所有断点
    /* 禁用断点 */ disable [num...] // 参数 num... 表示断点的编号,可以是多个 enable [num...] // 重新激活断点 enable once num... // 临时激活1次 enable count num... // 激活count次 enable delete num... // 激活1次断点,使用后删除

     

    条件断点

    设置条件,满足条件后才触发

    condition bnum expression    // 给编号bnum的断点增加或修改表达式expression
    condition bunm               // 删除编号bnum的表达式
    ignore bnum count            // 如 ignore 1 3   count指设置断点忽略的次数

    // 编号1 为普通断点, 编号2 为观察断点, 编号3 为捕获断点
    condition 1 num==3            // 普通断点添加条件表达式
    condition 2 num==4            // 观察断点添加条件表达式
    condition 3 num==5            // 捕捉断点添加条件表达式

    参考:http://c.biancheng.net/view/8219.html

    个人学习笔记,网络内容搬运工,喜欢的点个赞,如有侵权请联系删除。
  • 相关阅读:
    链家网各城市二手房价格
    mitmproxy 配置
    Python操作APP -- Appium-Python-Client
    Appium连接模拟器
    adb server version (xx) doesn't match this client (xx); killing...
    Appnium 环境搭建
    KeyError: 'xxx does not support field: _id'
    Python执行JS -- PyExecJS库
    Python -- CSV文件读写
    Git的基本使用 -- 分支管理
  • 原文地址:https://www.cnblogs.com/qing2105/p/14287374.html
Copyright © 2011-2022 走看看