百度
360搜索
搜狗搜索

linux中C语言debug命令使用详细介绍

在 Linux 系统中调试 C 语言程序,最常用的工具是 GDB(GNU Debugger)。以下是 GDB 的核心使用方法及常见调试场景的操作指南:

一、准备调试环境

调试前需确保程序编译时生成了调试信息,需在编译命令中添加 -g 选项(或 -ggdb 增强调试信息):
bash

gcc  your_program.c  your_program  

二、GDB 核心命令

通过 gdb your_program 启动调试器后,可使用以下命令控制程序执行并分析问题:

1.
查看代码(list

  • list(或 l):显示当前行附近的代码(默认显示 10 行)。
  • list 行号:显示指定行号附近的代码(如 list 15)。
  • list 函数名:显示指定函数的代码(如 list main)。

2.
设置断点(break

断点用于暂停程序执行,方便观察状态。常用方式:

  • break 行号:在指定行设置断点(如 break 20)。
  • break 函数名:在函数入口设置断点(如 break main)。
  • break 文件名:行号:在其他文件的指定行设置断点(如 break utils.c:30)。
  • info break(或 i b):查看所有断点信息(包括编号、位置、是否启用)。
  • delete 断点编号:删除指定断点(如 delete 3)。
  • disable 断点编号/enable 断点编号:禁用 / 启用断点。

3.
运行程序(run

  • run [参数](或 r):启动程序运行,遇到断点会暂停。
    示例:run 10 data.txt 表示程序启动时传递参数 10data.txt

4.
单步执行

程序暂停后(如触发断点),可用以下命令逐行分析:

  • next(或 n):单步执行(跳过函数内部,直接执行完整个函数)。
  • step(或 s):单步进入(会进入调用的函数内部)。
  • until(或 u):执行到当前循环结束(跳出循环)。
  • continue(或 c):继续运行到下一个断点或程序结束。

5.
查看与修改变量

  • print 变量名(或 p):打印变量当前值(如 p sum)。
    支持表达式:p i+5p *array(查看数组内容)、p &var(查看变量地址)。
  • whatis 变量名:查看变量类型(如 whatis count)。
  • set var 变量名=值:修改变量值(如 set var i=0)。

6.
调用栈回溯(backtrace

  • backtrace(或 bt):查看函数调用栈(当前函数、上层函数、参数等)。
    输出示例:plaintext
    #0  add (a=3, b=5) at test.c:5

    #1 main () at test.c:10

    表示当前在 add 函数(第 5 行),由 main 函数(第 10 行)调用。

7.
观察点(watch

观察点用于监控变量或表达式的变化,当值改变时程序暂停:

  • watch 变量名:当变量值改变时触发暂停(如 watch sum)。
  • info watchpoints:查看所有观察点。

三、实战示例

假设我们有一个简单的 C 程序 test.c,存在计算错误:
c

 

a b

a b

x y

result x y

result

调试步骤:

  1. 编译生成调试版本:bash
    gcc  test.c  

  2. 启动 GDB:bash
    gdb 

  3. main 函数设置断点:gdb
    (gdb) break main

  4. 运行程序:gdb
    (gdb) run

    程序会在 main 函数的第一行暂停。

  5. 单步进入 add 函数:gdb
    (gdb) step  // 执行到 int result = add(x, y); 时,再次输入 step 进入 add 函数

  6. 查看 ab 的值:gdb
    (gdb) print a  // 输出 3

    (gdb) print b // 输出 5

  7. 检查 add 函数的返回逻辑:
    发现 return a + b 被错误写成 a * b,修正后重新编译即可。

四、其他调试工具

除 GDB 外,以下工具可辅助调试:

  • Valgrind:检测内存泄漏(如 valgrind --leak-check=full ./your_program)。
  • strace:跟踪程序的系统调用和信号(如 strace ./your_program 查看文件 / 网络操作)。

通过 GDB 的这些命令,可高效定位 C 程序中的逻辑错误、内存问题或崩溃原因。实际调试时可结合断点、单步执行和变量观察,逐步缩小问题范围。

阅读更多 >>>  华为打开usb调试还是连不上

网站数据信息

"linux中C语言debug命令使用"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux中C语言debug命令使用的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!