当前位置: 首页 > wzjs >正文

建设部网站事故快报网站推广优化业务

建设部网站事故快报,网站推广优化业务,众筹插件 wordpress,ui设计外包GDB 断点的相关设置 本文使用GPT总结了GDB中断点的相关操作,同时从其中提取了本人比较常用的一些操作命令 第一节 为本人亲自总结/摘抄,第二节为GPT生成(高亮部分是本人补充的) 一、省流总结 1.1 设置断点 1.1.1 普通设置 假设是只有一…

GDB 断点的相关设置

本文使用GPT总结了GDB中断点的相关操作,同时从其中提取了本人比较常用的一些操作命令

第一节 为本人亲自总结/摘抄,第二节为GPT生成(高亮部分是本人补充的)

一、省流总结

1.1 设置断点

1.1.1 普通设置

假设是只有一个源cpp文件编译生成的可执行程序,那么最简单的方法就是按照源代码行号打断点。

(gdb) break 12;//等价于b 12;

这样就是在该源文件第12行设置一个断点

1.1.2 按函数设置

(gdb) break main

这会在程序的 main 函数处设置一个断点。

1.1.3 按源文件名:行号设置

如果需要指定断点的具体位置,可以使用文件名和行号。==(可以用来调试多文件项目)==例如:

(gdb) break main.c:10

1.2 断点的暂停/继续 使用

  • 使用 disable 命令禁用断点。例如:

    (gdb) disable 1
    

    这将禁用编号为 1 的断点。

  • 使用 enable 命令启用断点。例如:

    (gdb) enable 1
    

    这将启用编号为 1 的断点。

1.3 断点的删除

  • 使用 delete 命令删除断点。例如:

    (gdb) delete 1
    

    这将删除编号为 1 的断点。

  • 如果需要删除所有断点,可以使用:

    (gdb) delete breakpoints
    
  • 如果删除一个集合(几到几)的断点可以使用:(参考https://blog.csdn.net/yangzhongxuan/article/details/6901477)

    (gdb) delete 2-8
    

1.4 查看断点

1.3删除断点是根据对应的断点编号来进行删除的,而断点的编号信息的查看也是不可或缺的。

使用 info breakpoints 命令查看所有断点的信息

(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000000911 in main() at array.cpp:12
(gdb) 

二、参考的GPT解释

高亮的文字均为本人给GPT补充上去的

GDB(GNU 调试器)中的断点管理是一项非常重要的功能,它可以帮助开发者调试程序。断点的作用是在程序执行到特定位置时暂停,以便检查程序的状态和变量。以下是有关 GDB 断点管理的相关内容:

1. 断点类型

  • 断点(breakpoints) :这是最常见的断点类型,用于在程序执行到某个位置时暂停。可以在函数调用前、循环的特定迭代等关键点设置中断,以便检查程序的行为。
  • 观察点(watchpoints) :观察点用于监视特定变量或内存位置的值何时被读取或修改。当变量值发生变化时,程序会暂停。
  • 捕获点(catchpoints) :捕获点用于捕获异常,例如 C++ 程序中的异常被抛出时,程序会暂停。通过设置捕获点,可以分析异常的根源。
  • 中断点(tracepoints) :中断点允许程序继续执行,但会在触发中断点时收集特定的信息。与单纯的断点不同,中断点不会导致程序暂停,而是记录程序此时的状态信息。

2. 操作断点

  • 设置断点

    • 使用 break 命令设置普通断点。例如:

      (gdb) break main
      

      这会在程序的 main 函数处设置一个断点。
      如果需要指定断点的具体位置,可以使用文件名和行号。==(可以用来调试多文件项目)==例如:

      (gdb) break main.c:10
      

      也可以通过一个函数名设置断点:

      (gdb) break my_function
      
    • 使用正则表达式设置多个函数的断点。例如:

      (gdb) rbreak ^my_.*
      

      这将在所有以 my_ 开头的函数处设置断点。

  • 临时断点

    • 使用 tbreak 命令设置临时断点。例如:

      (gdb) tbreak main
      

      这会在 main 函数处设置一个临时断点。临时断点在第一次触发时会被自动删除。

  • 禁用和启用断点

    • 使用 disable 命令禁用断点。例如:

      (gdb) disable 1
      

      这将禁用编号为 1 的断点。

    • 使用 enable 命令启用断点。例如:

      (gdb) enable 1
      

      这将启用编号为 1 的断点。

  • 删除断点

    • 使用 delete 命令删除断点。例如:

      (gdb) delete 1
      

      这将删除编号为 1 的断点。

    • 如果需要删除所有断点,可以使用:

      (gdb) delete breakpoints
      
    • 如果删除一个集合(几到几)的断点可以使用:(参考https://blog.csdn.net/yangzhongxuan/article/details/6901477)

      (gdb) delete 2-8
      

3. 查看断点

  • 使用 info breakpoints 命令查看所有断点的信息。它会列出示例程序中所有断点的编号、类型、地址、条件、状态等详细信息。如:
(gdb) info breakpoints
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x000055555555519d in main at main.c:10
.breakpoints 1: x/i 0x000055555555519d
0x000055555555519d: mov    %edi,-0x4(%rbp)

4. 管理中断点

中断点(Tracepoints)是一种特殊的断点类型,允许您在程序的特定位置收集数据,而无需暂停程序执行。中断点通常用于复杂程序的性能分析或调试。

  • 创建中断点

    • 使用 trace 命令创建中断点。例如:

      (gdb) trace main
      

      这会在 main 函数处创建一个中断点。

    • 也可以结合其他参数创建中断点。例如,收集特定局部变量的值:

      (gdb) trace main
      (gdb) actions
      > collect x, y
      > end
      

      这将收集局部变量 xy 的值。

5. 断点条件

  • 设置条件断点

    • 可以为断点添加条件,使其仅在满足特定条件时暂停。例如:

      (gdb) break main if x == 10
      

      这个断点仅在变量 x 的值为 10 时暂停。

    • 可以使用 C 表达式作为条件。

  • 修改断点条件

    • 使用 condition 命令修改断点条件。例如:

      (gdb) condition 1 x < 0
      

      这会将编号为 1 的断点条件修改为 x < 0

6. 忽略断点

  • 使用 ignore 命令告诉 GDB 忽略断点的第一次触发。例如:

    (gdb) ignore 1 10
    

    这将导致编号为 1 的断点在前 10 次触发时被忽略。

7. 断点调试流程

  • 当程序在断点处暂停后,您可以使用以下命令调试程序:

    • 查看变量值 :使用 print 命令查看变量的值。例如:

      (gdb) print x
      
    • 单步执行 :使用 nextstep 命令单步执行程序。next 命令会按行执行,不进入函数内部,而 step 命令会进入函数内部。

    • 查看调用栈 :使用 backtracebt 命令查看程序的调用栈信息。

8. 调试实践

  • 在调试时,合理设置断点有助于快速定位问题。例如,如果您怀疑某个函数出现问题,可以在函数入口处设置断点,并使用 stepnext 逐步执行函数代码,观察变量的变化和程序的逻辑。
  • 如果问题与循环或条件判断有关,可以设置条件断点,仅在满足特定条件时暂停程序,这样可以避免暂停大量无关的执行步骤。
http://www.dtcms.com/wzjs/84506.html

相关文章:

  • 大良网站建设服务网站买卖
  • qq电脑版登录中国seo排行榜
  • 个人网站建设多少钱百度手机助手官网下载
  • 天津网站建设培训课件搜索引擎主要包括三个部分
  • 建站服务的网络公司有哪些50篇经典软文100字
  • 加强宣传阵地建设 高校 网站网络工程师
  • 网站插件代码下载如何优化网页
  • 深圳html5网站建设腾讯效果推广
  • 厦门网站建设68网销怎么做
  • wordpress+代码质量seo核心技术排名
  • 便捷的大连网站建设网络游戏推广员
  • 市住房和城乡规划建设局网站广东东莞大益队
  • 北京网站建设管庄网络营销推广合作
  • 公司想做个网站应该怎么做如何快速收录一个网站的信息
  • 做网站长沙深圳网站seo优化
  • 做网站需要哪方面的编程沈阳百度推广哪家好
  • 做网站所需技术南京广告宣传公司seo
  • 外销网站有哪些怎样做关键词排名优化
  • 购买网站设计制作自动化测试培训机构哪个好
  • 惠安网站建设费用廊坊seo管理
  • 建设独立网站需要什么百度一下首页百度一下知道
  • 如何做自己的播报网站cfa三级和一二级关系大吗
  • 没有网站怎么做cps关键词优化方法
  • 公司vi设计什么意思潍坊seo招聘
  • 做网店装修的网站有哪些班级优化大师官方免费下载
  • 做足球采集软件和预测软件的网站无锡seo网站排名
  • 网站建设对企业经营seo网站建设公司
  • 新网站建设市场seo站长查询
  • 做搜狗手机网站优seo优化关键词是什么意思
  • 刚做的网站怎么才能搜索到网络游戏推广员是做什么的