`
omygege
  • 浏览: 1350018 次
文章分类
社区版块
存档分类
最新评论

gdb break 断点设置(一)

 
阅读更多

http://sourceware.org/gdb/current/onlinedocs/gdb

二、断点设置

gdb断点分类:

以设置断点的命令分类:

breakpoint

可以根据行号、函数、条件生成断点。

watchpoint

监测变量或者表达式的值发生变化时产生断点。

catchpoint

监测信号的产生。例如c++的throw,或者加载库的时候。

gdb中的变量从1开始标号,不同的断点采用变量标号同一管理,可以 用enable、disable等命令管理,同时支持断点范围的操作,比如有些命令接受断点范围作为参数。

例如:disable 5-8

1、break及break变种详解:

相关命令有break,tbreak,rbreak,hbreak,thbreak,后两种是基于硬件的,先不介绍。

>>break 与 tbeak

break,tbreak可以根据行号、函数、条件生成断点。tbreak设置方法与break相同,只不过tbreak只在断点停一次,过后会自动将断点删除,break需要手动控制断点的删除和使能。

break 可带如下参数:

linenum 本地行号,即list命令可见的行号

filename:linenum 制定个文件的行号

function 函数,可以是自定义函数也可是库函数,如open

filename:function 制定文件中的函数

condtion 条件

*address 地址,可是函数,变量的地址,此地址可以通过info add命令得到。

例如:

break 10

break test.c:10

break main

break test.c:main

break system

break open

如果想在指定的地址设置断点,比如在main函数的地址出设断点。

可用info add main 获得main的地址如0x80484624,然后用break *0x80484624.

条件断点就是在如上述指定断点的同时指定进入断点的条件。

例如:(假如有int 类型变量 index)

break 10 if index == 3

tbreak 12 if index == 5

>>rbreak

rbreak 可以跟一个规则表达式。rbreak + 表达式的用法与grep + 表达式相似。即在所有与表达式匹配的函数入口都设置断点。

rbreak list_* 即在所有以 list_ 为开头字符的函数地方都设置断点。

rbreak ^list_ 功能与上同。

>>查看断点信息

info break [break num ]

info break 可列出所有断点信息,info break 后也可设置要查看的break num如:

info break 1 列出断点号是1的断点信息

 Num Type Disp Enb Address What
 1 breakpoint keep y <MULTIPLE>
 stop only if i==1
 breakpoint already hit 1 time
 1.1 y 0x080486a2 in void foo<int>() at t.cc:8
 1.2 y 0x080486ca in void foo<double>() at t.cc:8

分享到:
评论

相关推荐

    用GDB调试程序(一).docx

    (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) info break: 查看断点信息 (gdb) r:运行程序 (gdb) n:单步执行 (gdb) c:继续运行 (gdb) p 变量 :打印变量的值 (gdb)...

    gdb实例.docx

    (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) info break: 查看断点信息 (gdb) r:运行程序 (gdb) n:单步执行 (gdb) c:继续运行 (gdb) p 变量 :打印变量的值 (gdb)...

    linux的C++程序gdb调试方法

    你可以使用break或b命令来设置断点。例如,如果你想在main函数上设置断点,你可以输入: gdb break main 或者你也可以直接在源代码行号上设置断点,比如在第10行: gdb break filename.c:10 运行程序 使用run或r...

    GDB调试的基本流程.doc

    你可以使用break命令来设置断点。例如,如果你想在main函数处设置断点,可以输入: gdb break main 你也可以在特定的行号或特定的函数处设置断点。 4. 运行程序: 使用run命令来运行你的程序。当程序运行到你设置...

    GDB调试流程及命令大全

    - `break` 设置断点 - `run` 运行程序 - `step` 单步执行程序 - `print` 打印变量值 - `backtrace` 回溯当前函数调用堆栈 - `continue` 继续程序的执行 - `quit` 退出GDB 除了基本调试功能外,GDB还支持高级功能,...

    Linux下简单GDB调试教程

    •break 在代码里设置断点, 这将使程序执行到这里时被挂起. •c 继续运行程序 •quit 终止gdb •watch 使你能监视一个变量的值而不管它何时被改变. •print 查看变量的值 •shell 使你能不离开gdb就执行UNIX shell ...

    最新GDB 单步调试详解PPT.pdf

    **设置断点:**使用 break 命令在程序中设置断点,以便在特定行或函数处暂停执行。 **运行程序:**使用 run 命令运行程序。 **逐步执行:**使用 step、next 和 continue 命令逐步执行程序,逐行或逐函数执行。 **...

    vim-gdb:GDB的vim客户端

    vim-gdb 必需的 +相对时间 gdb集成 启动gdb 。 通过call gdb#start('hoge')运行gdb hoge ,或者 ... 然后设置一个断点( break ) 在光标上print变量的值( print ) 或者,使用以下命令运行hoge :Gdb hoge 结束 :

    python命令行调试!!!!

    设置断点 continue c 继续执行程序 list l 查看当前行的代码段 step s 进入函数 return r 执行代码直到从当前函数返回 quit q 终止并退出 next n 执行下一行 print p 打印变量的值 help h 帮助 ...

    linux中gdb的入门使用教程

    gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能强大到你无法想象,这里简单介绍下gdb的使用方法,需要的朋友们下面来一起看看详细的介绍吧。 断点 在代码的指定位置中断,使程序...

    C编译: 使用gdb调试

     在gdb中,你可以通过设置断点(break point)来控制程序运行的进度,并查看断点时的变量和函数调用状况,从而发现可能的问题。在许多IDE中,gdb拥有图形化界面。  这里主要介绍gdb的命令行使用,并以C程序为例。...

    gdb调试器的使用 有助于调试程序

    示和查找程序源代码:list 执行程序和获得帮助:run、help 设置和管理断点:break、info breakpoints、disable、delete、clear 查看和设置变量的值:print、whatis、set 控制程序的执行:continue、kill、next、step

    Linux下C语言使用、编译与调试实验1

    (2)设置断点在gdb中设置断点命令是“b”(break),后面跟行号或者函数名 (4)运行程序:输入“r”(run)开始运行程序 (5)查看变量值程序运行到断

    slabdbg:GDB插件,有助于利用Linux内核的SLUB分配器

    它显示slab缓存的内容,并允许在分配/释放操作上设置断点。 安装 无需安装,只需键入source slabdbg.py就足以让您入门。 用法 Usage: slab list - Display simple information about all slab caches slab info ...

    Dev_C++调试方法

    Dev-C++调试方法简明图文教程 把“生成调试信息”设置为 Yes 编译程序 设置断点(Break point) 开始调试(Debug) 查看变量的值

    CS402-Project-UTK:BVZ 代码可视化

    如何使用 ...在 main 处插入断点 -break-insert main 进入下一行 -exec-step 您可以在查看完整文档。 GDB通讯 GDBComm 是编译用户程序、执行 gdb 并将输出返回给前端的主类。 构造函数 GDBComm 将用户的

    wasmdbg:用Rust编写的WASM调试器

    wasmdbg wasmdbg是用于Rust编写的WebAssembly二进制文件的类似于gdb的调试器。 它目前支持所有MVP版本1二进制文件以及WASI的一个子集(当前非常有限)。...unstable.proc_exit ) 断点: break watch memory/global点:

    操作系统(内存管理)

    因此,当加载一个进程时,它会得到一个取决于某个称为 系统中断点(system break)的特定地址的初始内存分配。该地址之后是未被映射的内存 —— 用于在 RAM 或者硬盘中没有分配相应物理位置的内存。因此,如果一个...

    宋劲彬的嵌入式C语言一站式编程

    4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支...

    嵌入式Linux C编程入门(第2版) PPT

    2.4.2 设置/删除断点 53 2.4.3 数据相关命令 54 2.4.4 调试运行环境相关命令 55 2.4.5 堆栈相关命令 55 2.5 make工程管理器 55 2.5.1 makefile基本结构 56 2.5.2 makefile变量 58 2.5.3 ...

Global site tag (gtag.js) - Google Analytics