如何用在线编译器(OnlineGDB)编译、运行和调试 C/C++ 代码

OnlineGDB 是一个在线编译器与调试器,支持 C/C++ 等多种语言,用 gcc/g++ 编译、gdb 调试。如果你的目标是写完一段 C/C++ 代码后立刻编译运行,并且在出错时能单步跟踪变量,它可以在浏览器里完成整条链路,不需要本地装工具链。下面按“选语言 → 写代码 → 运行 → 调试 → 排错”的顺序说明。

选择语言和版本

进入编辑器后,在语言下拉框里选择目标语言。C/C++ 相关选项包括:

  • C
  • C++、C++ 14、C++ 17、C++ 20、C++ 23、C++ 26
  • C (TurboC)、C++ (TurboC)

选择哪个版本取决于代码用到的标准特性。例如使用了 C++17 的结构化绑定,就选 C++ 17 或更高;如果代码是为老式 Turbo C 环境写的,则选对应的 TurboC 选项。语言选错通常表现为语法报错或找不到头文件,而不是运行结果错误。

编写并运行代码

编辑器默认会带一段 Hello World 模板。把它替换成你的代码,然后点击 Run 按钮。

点击 Run 后,界面下方会依次出现:

  • Compiling Program...:正在编译
  • input:等待你提供标准输入的区域
  • stdout:程序的标准输出
  • stderr:错误输出

如果程序需要从标准输入读取数据(例如 scanf、cin),必须在运行前或运行中把输入填到 Standard Input 区域,否则程序会一直等待输入,最终可能触发超时错误。

一个最小可运行示例:

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a + b);
    return 0;
}

在 Standard Input 里填 3 5,Run 之后 stdout 应输出 8。

用 Debug 模式调试

点击 Debug 按钮进入调试模式,而不是 Run。进入后可以使用:

  • 断点:在代码行号处设置,程序运行到该行暂停
  • step over:执行当前行,不进入函数内部
  • step into:进入当前行调用的函数
  • step out:从当前函数返回到调用处
  • continue:继续运行到下一个断点
  • Call Stack:查看当前调用链
  • Local Variables:查看当前作用域内变量的值
  • Registers:查看寄存器值
  • Display Expressions:手动添加要持续观察的表达式

调试时的典型流程是:在关键行设断点 → Debug → 程序暂停后检查 Local Variables → 用 step over/into 逐行推进 → 观察变量是否符合预期。如果变量值不对,问题通常就在刚执行过的那几行。

控制程序输入

OnlineGDB 提供三种输入方式:

方式 用途
Command line arguments 传给 main(int argc, char** argv) 的参数
Standard Input 模拟键盘输入,供 scanf/cin 读取
Interactive Console 程序运行中交互式输入

如果程序依赖命令行参数,必须填在 Command line arguments 里,否则 argv 内容为空,程序行为会和预期不同。

常见错误:Runtime Exceed

出现 Runtime Exceed(运行超时)时,页面会给出几个可能原因:

  • 程序从标准输入读取数据,但你没有在 stdin 提供输入
  • 程序包含死循环,永远不退出
  • 程序包含无限递归调用
  • 程序处理的数据量过大,耗时过长

排查顺序建议是:先确认 Standard Input 是否填了必要输入;再检查循环的终止条件;然后检查递归是否有正确的基准情形。这三类原因覆盖了大多数超时情况。

保存、分享与下载

编辑器提供以下操作:

  • Save:保存当前代码
  • Share:生成可分享的链接
  • Download all files:下载项目文件
  • Beautify:格式化代码

如果需要调整编译行为,可以在 Extra Compiler Flags 里添加额外编译参数。编辑器还支持切换主题(Dark/Light)、编辑模式(Normal/Emacs/vim)、字体大小、Tab 空格数、自动补全和自动换行。

什么时候适合用 OnlineGDB

适合:临时验证一段 C/C++ 代码、在没有本地环境的机器上调试、需要把可运行代码分享给别人。

不太适合:项目依赖多个本地库、需要复杂构建系统、代码涉及敏感数据。这类情况更适合本地工具链。

ideone.com
Compile various programming languages online. Add input stream, save output, add notes and tags.
onlinegdb.com
Online GDB is online compiler and debugger for C/C++. You can compile, run and debug code with gdb online. Using gcc/g++ as compiler and gdb as deb...