gdb 断点示例 – 设置、查看、继续和删除断点

gdb 断点示例 – 设置、查看、继续和删除断点

Gdb 是调试 C 程序的必备工具。

断点是告诉 GDB 在特定行、函数或地址处停止或暂停程序执行的方法。一旦程序停止,您可以检查和更改变量值,从该断点继续执行程序等。如果您是 GDB 新手,您应该首先了解如何使用 GDB 调试 C 程序的基础知识。

本教程将使用以下代码通过示例来描述 gdb 断点。

#include

int power(int,int);

int main() {

int i;

printf("Program to calculate power\n");

for (i=0;i<10;i++)

printf("%d %d\n",i, power(2,i));

return 0;

}

int power (int base, int n) {

int i,p;

p=1;

for (i=1; i<=n; i++)

p = p*base;

return p;

}

# cc -g power.c

现在您有一个可执行文件,它计算 0-9 的以 2 为底的幂。

1. 如何在函数处设置断点

# gdb

(gdb) file ./a.out

Reading symbols from /home/lakshmanan/a.out...done.

(gdb) b power

Breakpoint 1 at 0x40055d: file power.c, line 16.

(gdb) run

Starting program: /home/lakshmanan/./a.out

Program to calculate power

Breakpoint 1, power (base=2, n=0) at power.c:17

17 p=1;

我们在函数电源处设置断点并运行程序。程序将继续执行,直到函数调用 power()。一旦遇到该函数,程序将停止。

2. 获取传递给函数的参数信息

要知道传递给函数的参数,请使用“info args”。

(gdb) info args

base = 2

n = 0

3.获取局部变量的信息

要了解有关此函数(当前堆栈帧)中可访问的局部变量的信息,请使用“info locals”。

(gdb) info locals

i = 32767

p = -7840

4. 继续执行程序直到下一个断点

要继续程序直到出现下一个断点,请使用“继续”。

(gdb) continue

Continuing.

0 1

Breakpoint 1, power (base=2, n=1) at power.c:16

16 int i=0,p=1;

一旦我们给出“继续”,幂函数就会被执行并打印结果。从'main()' for 循环再次调用了相同的幂函数,因此程序再次停止。

5. 获取所有断点的信息

您可以使用“信息断点”了解有关断点的信息。

(gdb) info breakpoints

Num Type Disp Enb Address What

1 breakpoint keep y 0x00000000004005a7 in power at power.c:16

breakpoint already hit 2 times

现在我们只设置了一个断点,并显示了有关断点的信息。

6.删除现有断点

要删除现有断点,请使用“删除断点”

(gdb) delete breakpoints 1

(gdb) info breakpoints

No breakpoints or watchpoints.

现在我们已经删除了 power 函数中存在的断点。

7.设置临时断点

有时您可能只想在某一点停止程序一次。您可以为此使用临时断点。临时断点只会停止程序一次,然后将其删除。

(gdb) tbreak power

Temporary breakpoint 3 at 0x4005a7: file power.c, line 16.

(gdb) info breakpoints

Num Type Disp Enb Address What

3 breakpoint del y 0x00000000004005a7 in power at power.c:16

(gdb) continue

Continuing.

1 2

Temporary breakpoint 3, power (base=2, n=2) at power.c:16

16 int i=0,p=1;

(gdb) info breakpoints

No breakpoints or watchpoints.

养生小贴士

讬喻的解释
💡 小知识

讬喻的解释

📅 09-12 👍 298
【深圳手机大全】深圳手机报价及图片大全
让 Mac 读写 NTFS 硬盘的性价比之选:Tuxera NTFS