searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

gdb 命令与简单调试

2023-09-26 03:33:33
13
0

gdb 命令大全

  1. 启动和加载程序

    • gdb program:启动 GDB 并加载要调试的程序。

    • run:运行程序。

    • attach process_id:附加到正在运行的进程。

  2. 断点和单步执行

    • break function 或 b function:在函数 function 的入口处设置断点。

    • break filename:line_number:在特定源代码文件的特定行上设置断点。

    • info breakpoints:显示当前设置的断点列表。

    • delete breakpoint_number:删除指定断点。

    • next:执行下一行代码。

    • step:进入函数调用。

    • finish:执行当前函数,直到返回。

  3. 变量和表达式

    • print expressionp expression:显示表达式的值。

    • info locals:显示当前函数的局部变量。

    • info args:显示当前函数的参数。

    • watch expression:观察表达式的值是否变化。

    • set variable = value:设置变量的值。

  4. 堆栈和调用链

    • backtracebt:显示调用堆栈。

    • frame frame_number:切换到指定帧。

    • updown:在调用堆栈中上下移动。

  5. 查看源代码

    • listl:显示当前源代码位置的附近代码。

    • list function:显示函数 function 的源代码。

  6. 文件操作

    • file executable:加载一个不同的可执行文件。

    • cd directory:更改工作目录。

  7. 调试控制

    • continuec:继续执行程序,直到下一个断点。

    • quitq:退出 GDB。

    • detach:从正在运行的进程分离 GDB,但保持进程运行。

  8. 查看程序状态

    • info program:显示程序的状态和信息。

    • info threads:显示线程信息。

    • info registers:显示寄存器的值。

  9. 其他

    • helph:获取帮助信息,例如 help command 以获取有关特定命令的详细信息。

    • set pagination off:禁用分页,以便在显示大量输出时不中断。

    • show:显示当前 GDB 配置的设置。

gdb 调试简单程序

当使用 GDB 调试 C 代码时,以下是一个简单的示例,展示了如何设置断点、查看变量和执行调试操作。假设有一个名为 example.c 的 C 源代码文件,内容如下:

#include <stdio.h>

int add(int a, int b) {
  return a + b;
}

int main() {
  int x = 5;
  int y = 7;
  int result;

  result = add(x, y);

  printf("The result is: %d\n", result);

  return 0;
}

以下是如何使用 GDB 调试这个程序的示例:

1. 编译代码时加入调试信息:

使用 GCC 编译器编译代码时,确保加入 -g 选项来生成包含调试信息的可执行文件:

gcc -g -o example example.c

-g:生成可执行文件

-o:修改生成文件的名字为example

2. 启动 GDB:

在终端中,输入以下命令以启动 GDB 并加载可执行文件:

gdb ./example

3. 设置断点:

在 GDB 中,可以设置断点,以在程序执行时停下来查看状态。在 main 函数的第 6 行设置一个断点:

(gdb) b 6
(gdb) tbreak line_number

或者可以使用函数名设置断点:

(gdb) b add
(gdb) tbreak function_name # 临时断点,程序执行到达一次后自动删除

如果你只想删除一个特定的断点,你可以使用 delete 命令,后跟断点号或断点的编号。首先,在 GDB 中列出当前的断点列表以获取断点编号:

(gdb) info breakpoints

然后,使用 delete 命令后跟断点编号来删除指定的断点:

(gdb) delete 1

如果你想删除所有已设置的断点,可以使用 delete 命令后跟 breakpoints 关键字:

(gdb) delete breakpoints

如果你只想删除所有临时断点(即使用 tbreak 命令设置的断点),可以使用 delete 命令后跟 tbreakpoints 关键字:

(gdb) delete tbreakpoints

4. 运行程序:

运行程序并开始调试:

(gdb) run

程序将在断点处停下来,你可以查看变量的值和程序状态。

5. 查看变量值或变量地址:

在程序停止时,你可以使用 print 命令查看变量的值。例如,查看 xy 的值:

(gdb) print x
(gdb) print y

查看变量地址:

(gdb) print &x

6. 单步执行:

使用 next 命令逐行单步执行程序:

(gdb) next

或者使用 step 命令进入函数并逐行执行:

(gdb) step

7. 查看函数调用堆栈:

使用 backtrace 命令查看函数调用堆栈:

(gdb) backtrace

8. 继续执行:

当你想要继续执行程序直到下一个断点时,可以使用 continue 命令:

(gdb) continue

9. 退出 GDB:

当你完成调试时,可以使用 quit 命令退出 GDB:

(gdb) quit

这是一个简单的示例,展示了如何使用 GDB 调试 C 代码。在实际应用中,你可以结合更多的 GDB 命令和功能来解决更复杂的问题。记得查阅 GDB 的文档以深入了解更多功能和选项。

0条评论
0 / 1000
刘****民
2文章数
0粉丝数
刘****民
2 文章 | 0 粉丝
刘****民
2文章数
0粉丝数
刘****民
2 文章 | 0 粉丝
原创

gdb 命令与简单调试

2023-09-26 03:33:33
13
0

gdb 命令大全

  1. 启动和加载程序

    • gdb program:启动 GDB 并加载要调试的程序。

    • run:运行程序。

    • attach process_id:附加到正在运行的进程。

  2. 断点和单步执行

    • break function 或 b function:在函数 function 的入口处设置断点。

    • break filename:line_number:在特定源代码文件的特定行上设置断点。

    • info breakpoints:显示当前设置的断点列表。

    • delete breakpoint_number:删除指定断点。

    • next:执行下一行代码。

    • step:进入函数调用。

    • finish:执行当前函数,直到返回。

  3. 变量和表达式

    • print expressionp expression:显示表达式的值。

    • info locals:显示当前函数的局部变量。

    • info args:显示当前函数的参数。

    • watch expression:观察表达式的值是否变化。

    • set variable = value:设置变量的值。

  4. 堆栈和调用链

    • backtracebt:显示调用堆栈。

    • frame frame_number:切换到指定帧。

    • updown:在调用堆栈中上下移动。

  5. 查看源代码

    • listl:显示当前源代码位置的附近代码。

    • list function:显示函数 function 的源代码。

  6. 文件操作

    • file executable:加载一个不同的可执行文件。

    • cd directory:更改工作目录。

  7. 调试控制

    • continuec:继续执行程序,直到下一个断点。

    • quitq:退出 GDB。

    • detach:从正在运行的进程分离 GDB,但保持进程运行。

  8. 查看程序状态

    • info program:显示程序的状态和信息。

    • info threads:显示线程信息。

    • info registers:显示寄存器的值。

  9. 其他

    • helph:获取帮助信息,例如 help command 以获取有关特定命令的详细信息。

    • set pagination off:禁用分页,以便在显示大量输出时不中断。

    • show:显示当前 GDB 配置的设置。

gdb 调试简单程序

当使用 GDB 调试 C 代码时,以下是一个简单的示例,展示了如何设置断点、查看变量和执行调试操作。假设有一个名为 example.c 的 C 源代码文件,内容如下:

#include <stdio.h>

int add(int a, int b) {
  return a + b;
}

int main() {
  int x = 5;
  int y = 7;
  int result;

  result = add(x, y);

  printf("The result is: %d\n", result);

  return 0;
}

以下是如何使用 GDB 调试这个程序的示例:

1. 编译代码时加入调试信息:

使用 GCC 编译器编译代码时,确保加入 -g 选项来生成包含调试信息的可执行文件:

gcc -g -o example example.c

-g:生成可执行文件

-o:修改生成文件的名字为example

2. 启动 GDB:

在终端中,输入以下命令以启动 GDB 并加载可执行文件:

gdb ./example

3. 设置断点:

在 GDB 中,可以设置断点,以在程序执行时停下来查看状态。在 main 函数的第 6 行设置一个断点:

(gdb) b 6
(gdb) tbreak line_number

或者可以使用函数名设置断点:

(gdb) b add
(gdb) tbreak function_name # 临时断点,程序执行到达一次后自动删除

如果你只想删除一个特定的断点,你可以使用 delete 命令,后跟断点号或断点的编号。首先,在 GDB 中列出当前的断点列表以获取断点编号:

(gdb) info breakpoints

然后,使用 delete 命令后跟断点编号来删除指定的断点:

(gdb) delete 1

如果你想删除所有已设置的断点,可以使用 delete 命令后跟 breakpoints 关键字:

(gdb) delete breakpoints

如果你只想删除所有临时断点(即使用 tbreak 命令设置的断点),可以使用 delete 命令后跟 tbreakpoints 关键字:

(gdb) delete tbreakpoints

4. 运行程序:

运行程序并开始调试:

(gdb) run

程序将在断点处停下来,你可以查看变量的值和程序状态。

5. 查看变量值或变量地址:

在程序停止时,你可以使用 print 命令查看变量的值。例如,查看 xy 的值:

(gdb) print x
(gdb) print y

查看变量地址:

(gdb) print &x

6. 单步执行:

使用 next 命令逐行单步执行程序:

(gdb) next

或者使用 step 命令进入函数并逐行执行:

(gdb) step

7. 查看函数调用堆栈:

使用 backtrace 命令查看函数调用堆栈:

(gdb) backtrace

8. 继续执行:

当你想要继续执行程序直到下一个断点时,可以使用 continue 命令:

(gdb) continue

9. 退出 GDB:

当你完成调试时,可以使用 quit 命令退出 GDB:

(gdb) quit

这是一个简单的示例,展示了如何使用 GDB 调试 C 代码。在实际应用中,你可以结合更多的 GDB 命令和功能来解决更复杂的问题。记得查阅 GDB 的文档以深入了解更多功能和选项。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0