码迷,mamicode.com
首页 > 数据库 > 详细

使用GDB进行断点调试

时间:2020-03-18 00:00:42      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:不同   暂停   常用   一行代码   操作   调试   内存   family   没有   

1.断点类型

软件断点:由非法指令异常实现(软件实现)

硬件断点:由硬件特性实现(数量有限)

数据断点:由硬件特性实现(数量有限)

为什么要分软件断点和硬件断点呢?

软件断点通常是可以运行于内存中的程序,代码加载到内存中执行,那么软件断点就是有效的。

对于flash中的程序执行,软件断点就没有用了。此时必须依赖于硬件断点。

这就是软件断点和硬件断点使用上的不同。

软件断点:适用于运行于内存中的程序

硬件断点:适用于直接在flash中运行的程序。

数据断点:往往用来监视一段内存的,如果这段内存被访问了(读或写),程序的执行立即停下来,这就是数据断点。

2.软件断点的相关操作

—通过函数名设置断点

break func_name  [if var = value]

tbreak func_name [if var = value]

break和tbreak的差异:断点有效次数的差异

break设置的断点总是有效的(永久断点)

tbreak设置一次有效断点(一次性断点)

[if var = value],如果在打断点的时候,指明了这样的条件,那么该断点就变成了一个条件断点。条件断点只有在条件成立时,才能暂停程序的执行。

—通过文件名行号设置断点

break file_name : line_num [if var = value]

cbreak file_name : line_num [if var = value]

操作                                   命令

断点查看                           info breakpoints

断点删除                           delete 1 2  n

                                        delete breakpoints  删除所有断点

断点状态改变                    enable  1  2   n

                                        enable breakpoints

                                        disable 1  2  n

                                        disable breakpoints

3.调试中常用的操作

操作             命令

变量查看                                        print name

变量设置                                        set var name = value

执行下一行代码                             next

连续执行n行代码                           next n

执行进入函数                                 step

强制当前函数返回                          return [value] 以某个值返回当前函数

运行至当前函数返回                       finish 执行完当前所在的函数,然后暂停下来

执行至目标行                                 until line

跳转执行                                        jump line

使用GDB进行断点调试

标签:不同   暂停   常用   一行代码   操作   调试   内存   family   没有   

原文地址:https://www.cnblogs.com/-glb/p/12514577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!