You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GDB中打印C语言程序通过fopen打开的文件内容

在GDB中查看fopen打开的文件内容的实现方法

首先编译你的C代码时需要添加-g参数保留调试信息,示例编译命令如下:
gcc -g test.c -o test
其中test.c为你给出的示例代码文件。


操作步骤

  • 启动GDB加载可执行文件:gdb ./test
  • 在fopen执行完成后的位置设置断点,你可以选择在fclose所在行打断点:
    • 按行号打断点(假设fclose在代码第7行):break 7
    • 按函数打断点:break fclose
  • 运行程序:run,程序执行到断点位置会自动暂停,此时file指针已经指向成功打开的文件。

两种查看文件内容的方法

方法1:通过FILE指针调用标准库函数读取(无需已知文件路径)

这种方法直接使用当前已经打开的FILE指针操作,不需要关心文件的实际路径:

  • 首先将文件读写偏移重置到文件开头:call (void)rewind(file)
  • 逐行读取打印文件内容:
    你可以直接执行下面的循环命令,其中$buffer是GDB内置便利变量,无需提前声明:
    while (call fgets($buffer, 1024, file) != 0)
      call printf("%s", $buffer)
    
  • 如果你已经知道打开的文件路径,也可以直接调用system命令输出内容:
    call (int)system("cat /etc/passwd")

方法2:直接使用GDB的shell命令查看

如果你清楚当前打开的文件路径,可以直接在GDB内调用shell命令打印文件:
shell cat /etc/passwd

内容的提问来源于stack exchange,提问作者CoopDaddio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:03