gdb断点(在gdb中可以配合shell命令)—断点设置 断点管理—单文件,多文件(c和c++)分类: Linux常用工具 在gdb中使用shell命令的方式是: (gdb) shell command 但是cd是内置命令,就不要使用shell了。 gdb原文件的搜索 断点设置: 单文件设置断点: break命令(可以简写为b)可以用来在调试的程序中设置断点,该命令有如下四种形式: (gdb) break line-number 使程序恰好在执行给定行之前停止。 (gdb) break function-name 使程序恰好在进入指定的函数之前停止。 (gdb) break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止。 (gdb) break routine-name 在指定例程的入口处设置断点 C多文件设置断点: 如果该程序是由很多原文件构成的,你可以在各个原文件中设置断点,而不是在当前的原文件中设置断点,其方法如下:(该目录下) (gdb) break filename:line-number 多文件中,在指定文件::指定行,设置断点 (gdb) break filename:function-name 多文件中,在指定文件::指定函数处,设置断点 (在C语言中,不存在域名的问题) 要想设置一个条件断点,可以利用break if命令,如下所示: (gdb) break line-or-function if expr 设置条件断点 例: (gdb) break 46 if testsize==100 断点继续运行:countinue 命令 C++多文件设置断点: 错误跨文件设置断点方法: 1. 2. b str_parser.cpp:LocalSegment 3. 正确跨文件设置方法: 1. 2. b str_parser.cpp:1361 (StrParser::LocalSegment所在行) 断点管理: 显示当前gdb的断点信息: (gdb) info break 他会以如下的形式显示所有的断点信息: Num Type Disp Enb Address What 1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155 2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168
删除指定的某个断点: (gdb) delete breakpoint 1 该命令将会删除编号为1的断点,如果不带编号参数,将删除所有的断点 (gdb) delete breakpoint
禁止使用某个断点 (gdb) disable breakpoint 1 该命令将禁止断点 1,同时断点信息的 (Enb)域将变为 n
允许使用某个断点 (gdb) enable breakpoint 1 该命令将允许断点 1,同时断点信息的 (Enb)域将变为 y
清除原文件中某一代码行上的所有断点 (gdb)clean number
注:number 为原文件的某个代码行的行号 |
|