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

OnlineGDB 是一个在线编译器与调试器,使用 gcc/g++ 编译、gdb 调试,目前支持 C 和 C++。它适合临时验证一段 C/C++ 代码、排查逻辑错误,或在没有本地编译环境的设备上完成编译、运行、单步调试和分享。整个流程都在浏览器里完成:选语言、写代码、Run 运行、Debug 调试、用 Standard Input 提供输入、用 Share/Save 保存或分享。

打开网站并选择语言与编译器版本

进入 onlinegdb.com,页面顶部就是语言下拉框。C/C++ 相关选项包括:

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

选择哪个版本会直接影响可用语法。例如用到 C++17 的结构化绑定、C++20 的 concepts,就要选对应版本,否则编译阶段就会报错。页面同时提供编辑器主题(Dark/Light)、Editor Mode(Normal/Emacs/vim)、字体大小、Tab 宽度、自动补全和自动换行等设置,这些只影响编辑体验,不影响编译结果。

编写代码并点击 Run 编译运行

默认编辑器里已经有一段 Hello World 模板(#include + int main() + printf("Hello World"))。你可以直接改这段代码,也可以清空后粘贴自己的代码。

点击 Run 后:

  • 下方 stdout 显示程序的标准输出
  • stderr 显示错误输出
  • 编译或运行失败时,错误信息会出现在终端区域

如果代码有语法错误,编译不会通过,终端会给出编译器报错;如果编译通过但运行结果不对,就需要进入调试模式定位问题。

点击 Debug 进入调试模式

点击 Debug 按钮,程序会以调试模式启动。页面提示 “Program is not being debugged. Click ‘Debug’ button to start program in debug mode.”,说明调试尚未开始;点击后即可使用调试控制。

调试工具栏提供这些操作:

操作 作用
start / pause / continue 启动、暂停、继续执行
step over 单步执行,不进入被调用函数内部
step into 单步执行,进入被调用函数内部
step out 从当前函数跳出,回到调用处
help 查看调试帮助

典型用法:在可疑行设置断点,点击 Debug 让程序停在断点处,再用 step over / step into 逐行观察执行路径,用 continue 跳到下一个断点。

查看运行状态:Call Stack、变量、寄存器与表达式

调试模式下,右侧面板会同步显示程序内部状态:

  • Call Stack:显示 # Function File:Line,即当前调用栈和所在文件行号,用来判断程序是怎么走到这一行的
  • Local Variables:显示当前作用域内变量的名称和值
  • Registers:显示寄存器及其值
  • Display Expressions:手动添加想持续观察的表达式,值会随执行更新
  • Breakpoints and Watchpoints:列出已设置的断点和观察点,可查看描述并管理

排查数组越界、指针异常、循环变量不对时,通常先看 Local Variables 和 Display Expressions,再结合 Call Stack 确认调用路径。

提供程序输入,避免 Runtime Exceed

如果程序从标准输入读取数据(例如 scanf、cin),必须在运行前提供输入,否则程序会一直等待,最终可能触发 Runtime Exceed。页面提供两个入口:

  • Standard Input:把要输入的内容提前填好,程序运行时按顺序读取
  • Interactive Console:在程序运行过程中交互式输入

页面列出的 Runtime Exceed 常见原因包括:

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

前三种可以通过补输入、检查循环条件和递归终止条件解决;第四种需要优化算法或减少数据规模。

保存与分享代码

  • Save:保存当前代码
  • Share:生成可分享的链接,方便把代码发给别人复现问题
  • Download all files:下载项目中的全部文件
  • { } Beautify:格式化代码

页面还提供 My Projects、Classroom、Learn Programming、Programming Questions 等入口,以及 Sign Up / Login 用于保存和管理项目。页面存在 Upgrade Premium 链接,说明有付费升级选项,但具体价格和权益需以该页面为准。

常见卡点

  • 选错语言或标准版本:C++17 代码在 C++ 选项下可能编译失败,先确认下拉框选的是 C++ 17 或更高。
  • 忘记提供输入:程序卡住不动时,先检查是否在等 stdin。
  • 断点没生效:确认已点击 Debug 进入调试模式,而不是只点了 Run。
  • 调试时看不到变量:变量可能已被优化或不在当前作用域,可结合 Display Expressions 手动观察。
  • 页面提示新版本:出现 “New Version Available” 时,先保存数据再刷新页面更新。
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...