1. 设置条件断点的方法:

4.1 break [location] if condition

(gdb) l
2 {
3 int i;
4 int k = 0;
5 for(i = 0; i < 10; i++)
6 {
7 k = i * i;
8 }
9
10 return 0;
11 }
(gdb) break 7 if i == 5 //此处的7为行号
Breakpoint 4 at 0x80483ca: file testloop.c, line 7.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/charles/code/testloop

Breakpoint 4, main () at testloop.c:7
7 k = i * i;
(gdb) p i
$7 = 5
(gdb)
4.2 使用 condition N condition. N是一个 breakpoint number.
(gdb) l
1 int main(void)
2 {
3 int i;
4 int k = 0;
5 for(i = 0; i < 10; i++)
6 {
7 k = i * i;
8 }
9
10 return 0;
(gdb) break 7
Breakpoint 1 at 0x80483ca: file testloop.c, line 7.
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x080483ca in main at testloop.c:7
(gdb) help condition
Specify breakpoint number N to break only if COND is true.
Usage is `condition N COND’, where N is an integer and COND is an
expression to be evaluated whenever breakpoint N is reached.
(gdb) condition 1 i == 4 //此处的1为info break中的断点号
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x080483ca in main at testloop.c:7
stop only if i == 4
(gdb) r
Starting program: /home/charles/code/testloop

Breakpoint 1, main () at testloop.c:7
7 k = i * i;
(gdb) p i
$1 = 4

  1. 多线程下禁止线程切换:

set scheduler-locking on

原文:https://blog.csdn.net/caspiansea/article/details/37887969until这个用于执行完循环。在执行完循环体内的最后一条语句之后执行 until, 就会执行完循环体到后面的一个语句停下。finish执行完当前的函数。设置条件断点的方法:4.1 break [location] if condition(gdb) ... [root@redhat home]# gdb 调试文件:启动 gdb ( gdb ) l :(字母l)从第一行开始列出源码 ( gdb ) break n :在第n行处 设置 断点 ( gdb ) break func:在 函数 func()的入口处 设置 断点 ( gdb ) info break: 查看 断点 信息 ( gdb ) r:运行程序 ( gdb ) n:单步执行 ( gdb ) c:继续运行 ( gdb ) p 变量 :打印变量的值 ( gdb ) bt:查看 函数 堆栈 ( gdb ) finish: 退出 函数 ( gdb ) shell 命令行:执行shell命令行 ( gdb ) set args 参数:指定运行时的参数 ( gdb ) show args:查看 设置 好的参数 ( gdb ) show paths:查看程序运行路径;            set environment varname [=value] 设置 环境变量。如:set env USER=hchen;             show environment [varname] 查看环境变量; ( gdb ) cd 相当于shell的cd; ( gdb )pwd :显示当前所在目录 ( gdb )info program: 来查看程序的是否在运行,进程号,被暂停的原因。 ( gdb )clear 行号n:清除第n行的 断点 ( gdb )delete 断点 号n:删除第n个 断点 ( gdb )disable 断点 号n:暂停第n个 断点 ( gdb )enable 断点 号n:开启第n个 断点 ( gdb )step:单步调试如果有 函数 调用,则进入 函数 ;与命令n不同,n是不进入调用的 函数
1. main 函数 :int main(int argc, char* argv[]),调用main 函数 前系统先调用一个特殊的启动例程,它从内核取得命令行参数和环境变量值,为调用main 函数 做好安排。 2. 进程终止方式8种,5种正常终止: a) main 函数 return b) 调用exit c) 调用_exit或_Exit d) 最后一个线程从其启动例程返回 e) 最后一个线程调用pthread_exit 异常终止3种方式 a) 调用abort b) ...
在Linux中使用 gdb 调试程序时,可以通过 设置 断点 来暂停程序的执行,以便进行调试。 设置 断点 的方法如下: 1. 在终端中打开 gdb 调试器,输入要调试的程序的路径和名称,例如: gdb /path/to/program 2. 进入 gdb 调试器后,可以使用b命令 设置 断点 。例如,要在程序的第10行 设置 断点 ,可以输入:b 10 3. 如果要在某个 函数 设置 断点 ,可以使用b命令加上 函数 名。例如,要在 函数 foo()中 设置 断点 ,可以输入:b foo 4. 如果要在某个文件中 设置 断点 ,可以使用b命令加上文件名和行号。例如,要在文件test.c的第20行 设置 断点 ,可以输入:b test.c:20 5. 设置 断点 后,可以使用r命令运行程序。程序执行到 断点 处时,会自动暂停执行。 6. 在程序暂停执行时,可以使用s命令单步执行程序,或使用c命令继续执行程序直到下一个 断点 。 7. 如果要删除 断点 ,可以使用d命令。例如,要删除第10行的 断点 ,可以输入:d 10 以上就是在Linux中使用 gdb 调试器 设置 断点 的方法。