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

OnlineGDB 是一个在浏览器里运行的 C/C++ 在线编译器和调试器,编译用 gcc/g++,调试用 gdb。你不需要在本地安装任何工具,打开网页就能写代码、编译运行、打断点单步调试。它适合快速验证一段 C/C++ 代码、排查逻辑错误,或者在没有本地开发环境的机器上临时调试。前提是你能访问该网站,并且代码本身是 C 或 C++(该站点当前支持的语言以页面语言下拉列表为准,C/C++ 是核心支持项)。

第一步:选择语言并写入代码

打开 OnlineGDB 后,先确认语言设置:

  • 在语言下拉框中选择 C 或 C++。C++ 还细分了 C++ 14、C++ 17、C++ 20、C++ 23、C++ 26 等标准版本,按你的代码需要选择;如果代码用了较新的语法特性,选对应或更高的标准。
  • 在中间编辑器区域直接输入或粘贴代码。页面默认给出一段 Hello World 示例,可以直接覆盖。
  • 编辑器下方可以调整主题(Dark/Light)、编辑模式(Normal/Emacs/vim)、字号、Tab 空格数、自动补全和自动换行。这些只影响编辑体验,不影响编译结果。
  • 如果有额外的编译参数需求,可以在 Extra Compiler Flags 里填写。

第二步:先 Run 编译运行

在进入调试之前,建议先点 Run 确认程序能正常编译和运行:

  1. 点击顶部 Run 按钮,程序开始编译。
  2. 编译信息、程序输出会显示在下方终端区域。编译报错会出现在 stderr 或编译输出里,按提示回到代码修改。
  3. 如果程序需要从标准输入读数据,在 Standard Input 区域提前填好输入内容。这一步很关键——很多“运行没反应”或“Runtime Exceed”就是因为忘了提供 stdin 输入。
  4. 需要传命令行参数时,填在 Command line arguments 里。

Run 通过后,说明代码至少语法正确、能跑起来。接下来才是用调试器定位逻辑问题。

第三步:点 Debug 进入调试模式

点击 Debug 按钮,程序会以调试模式启动。页面下方会出现调试控制区,包含这些操作:

操作 作用
start / pause / continue 开始、暂停、继续执行
step over 单步执行,遇到函数调用不进入函数内部
step into 单步执行,遇到函数调用进入函数内部
step out 从当前函数跳出,回到调用它的上一层
help 查看调试相关帮助

调试前先在代码行号处设置断点。程序运行到断点会停下来,此时你可以检查当前状态。如果终端提示 “Program is not being debugged. Click 'Debug' button to start program in debug mode.”,说明你还没进入调试模式,点 Debug 即可。

第四步:用面板查看运行时状态

程序在断点处停下后,右侧和下方的面板会显示关键信息:

  • Call Stack:当前函数调用栈,显示每个栈帧对应的函数、文件和行号。递归或嵌套调用出错时,这里能看清调用路径。
  • Local Variables:当前作用域内局部变量的值。单步执行时观察变量怎么变化,是找逻辑错误最直接的方式。
  • Display Expressions:可以自己添加表达式,持续观察它的值,比如某个计算结果或指针指向的内容。
  • Registers:寄存器值,一般在分析底层行为时才需要看。
  • Breakpoints and Watchpoints:管理已设置的断点和观察点。

典型用法:在怀疑出错的位置前打断点,Debug 运行到断点,用 step over/into 逐步执行,同时盯着 Local Variables 里相关变量的值,看它是否在某一刻变成了非预期值。

遇到 Runtime Exceed 怎么排查

页面给出的 Runtime Exceed(运行超时)常见原因有三类:

  1. 程序在读标准输入,但你没提供输入。检查 Standard Input 区域是否填了数据。
  2. 死循环。循环条件可能永远为真,用断点加单步确认循环是否按预期退出。
  3. 无限递归。递归函数缺少正确的终止条件,用 Call Stack 看调用栈是否在不断加深。

另外,如果程序处理的数据量很大、本身耗时较长,也可能触发超时,这种情况需要优化算法或减少数据规模。

保存与分享

  • Share:生成可分享的链接,方便把代码发给别人。
  • Save:保存当前代码。
  • Download all files:把项目里的全部文件下载到本地。
  • 页面还有 My Projects、Classroom 等入口,以及 Sign Up / Login 账号功能,登录后可以管理自己的项目。

什么时候适合用它

OnlineGDB 适合:快速验证 C/C++ 片段、练习调试技巧、在没有本地环境时临时排查问题、把可运行代码分享给别人。它不适合:需要复杂构建系统、依赖大量第三方库、或对运行时长和资源有较高要求的项目——这类场景还是本地开发环境更合适。

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...