如何使用代码调试?

牛客编程页现在已经支持代码调试功能(debug),帮助您轻松调试、修正错误。
🎉 🎉 🎉

什么是代码调试?

在开发过程中,你的代码可能包含逻辑错误、输出不符合预期等情况,如果没有调试工具,这些错误比较难于发现。
断点调试是最重要的调试技术之一,你可以通过调试器执行至任何你想要暂停的代码行,且可以在代码执行时检测变量、查看程序的执行流程。
 e.g.  查看代码变量状态、查看断点处的调用堆栈


「牛客代码调试器」支持:
  • 代码中任意设置断点,单步调试
  • 添加“表达式”,跟踪表达式数值

如何使用「牛客代码调试器」?

功能入口:编程做题页>代码调试

1. 设置断点

「断点」是程序执行到达指定字符串时触发的命令。 该命令停止该字符串的执行。 断点允许检查指定代码区域中的程序行为: 查看变量值和函数堆栈。 随后,调试过程可以恢复或终止。
在启动调试之前,在程序代码中至少设置一个断点。请点击代码行左侧的区域,设置断点。
                                        

2. 启动调试

调试之前,您需要编写输入数据后,才可进行调试。
您可以自行编写输入数据或点击载入示例数据。
点击启动调试模式。


在此模式,调试程序正在编译您的代码,需要编译通过后才可开始调试流程。

3. 开始调试

一旦程序在调试模式下一行到断点,它就会暂停。
暂停执行的行会红色高亮,如下的第3行:

在编辑器顶部,有一个调试工具栏:
  • 开始调试-Start debug ,启动调试过程,开始运行程序,直到第一个断点;
  • 执行下一个断点 Continue  ,运行至下一个断点;
  • 单步跳过  Step over 程序执行下一行单步进入被调用函数
  • 单步调试- Step in ,程序执行下一行并进入被调用的函数;
  • 单步跳出- Step out ,程序执行完被调用函数,并返回到上一层函数;
  • 重新执行-Restart ,重新开始调试。

4. 变量/监听

在调试过程中,可以在当前程序执行步骤中跟踪各种表达式(变量)的值。左侧变量/表达式展示台显示相应的结果。

如果要跟踪表达式数值,可以将变量/表达式添加在「监听」中:
  • 点击
  • 在新出现的行,输入表达式或变量名
  • 回车生成表达式名称

5. 暂停、结束、退出调试

当执行程序抵达带有断点的代码行时,程序就会自动暂停。您也可以手动管理:
  • 暂停执行
调试中,可点击调试工具栏中的  手动暂停程序执行。暂停后,可以继续执行单步执行命令。
  • 停止调试
如您想要编辑代码、切换语言或完成调试,可点击调试工具栏中的  或  输入输出台中的  停止调试。
  • 退出调试
如您已经完成整个调试、排错流程,可点击左上角的或右上角的图标退出调试模式,返回看题。

支持的语言及版本

「牛客代码调试器」目前支持5种语言,未来将持续支持更多语言。
语言 版本

C++

clang++11

C

clang11

Java

javac 1.8

Python

2.7.3

Python3

3.9

JavaScript

Node 12.18.2 

GO

1.14.4

Rust

1.44

PHP

7.4.7

Typescript

4.1.2

Ruby

2.7.1

Kotlin

1.4.10

Swift

5.3



常见问题❓

1. 找不到「代码调试」

  • 「牛客代码调试器」现在仅支持算法题和部分语言(请看“支持的语言及版本”)
  • 请确保您当前是在“练习”模式下

2. 无法开始调试

如您遇到无法开始调试的情况,请确保:
  • 您已在代码中设置断点
  • 您已经输入数据
  • 您的代码已通过编译

3. 无法编辑代码

在调试执行程序时,无法编辑代码,请停止调试后编辑您的代码。

4. 其他问题

如在调试过程中遇到其他问题,请在下方评论区反馈,并且带上:
  • 题目链接
  • 调试代码
  • 问题描述
我们将尽快给您回复。



打造「牛客代码调试器」的初衷是希望大家能更顺利的编码,体验编程的乐趣。
当然,调试器有不够完美的地方,欢迎大家在评论区或加入QQ群(460237008)给出宝贵的意见。我们将携着大家的意见,持续优化debug体验。
谢谢大家一直以来的支持与耐心
全部评论
请问JS V8不配拥有代码调试吗?
9 回复 分享
发布于 2022-05-07 00:31
你好,这两天基本上每道题都无法调试,代码都能跑通,就是没法调试
4 回复 分享
发布于 2021-08-30 09:58
java提示执行超时,调试已结束
2 回复 分享
发布于 2021-09-11 14:48
提一个建议,每次要查看数组的时候,把数组点开,然后程序运行下一步的时候数组那一栏又收起来了,不太方便
2 回复 分享
发布于 2022-01-15 22:22
第一次用咱的平台,请教输入的入参如何获取呢? 比如java的main方法获取🤣  public static void main(String[] args){      System.out.println(Main.strLen(args[0]));  }
点赞 回复 分享
发布于 2021-02-20 15:13
题目链接:https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey 代码: import java.util.ArrayList; public class Solution {     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {         if (listNode == null) {             return null;         }         ArrayList<Integer> arr = new ArrayList();          if (listNode.next == null){             arr.add(listNode.val);             return arr;         }         arr = printListFromTailToHead(listNode.next);         arr.add(listNode.val);         return arr;     } } 输入 {67,0,24,58} 版本,Java1.8
点赞 回复 分享
发布于 2021-02-26 21:01
JS代码今天怎么连自测按钮都没有了?
点赞 回复 分享
发布于 2021-03-17 11:00
我是使用C++语言,为什么调试输出的结果与自测输出的结果不一样?一模一样的输入
点赞 回复 分享
发布于 2021-05-05 16:39
我就调试不了。。。
点赞 回复 分享
发布于 2021-05-11 09:56
 请问下  有木有人遇到界面不能下来 看不见完整的问题描述的情况 不是卡住了 !
点赞 回复 分享
发布于 2021-06-03 08:09
请问,调试代码的时候,左边的变量查看怎么往下拉啊,有很多内容的时候下面的变量就看不到了,也没有哪里可以拖动,滚鼠标滚轮也没反应
点赞 回复 分享
发布于 2021-07-02 21:57
java.io.FileNotFoundException: /hexin-userprint.log (Permission denied)  debug编译不通过是咋回事啊
点赞 回复 分享
发布于 2021-07-07 10:16
为什么node环境下不能调试js了
点赞 回复 分享
发布于 2021-08-26 22:28
题目:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=117&&tqId=37777&&companyId=239&rp=1&ru=/company/home/code/239&qru=/ta/job-code-high/question-ranking 程序: /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public:     ListNode* ReverseList(ListNode* pHead) {         ListNode* pre=nullptr;         ListNode* nex=nullptr;         while(pHead)         {             nex=pHead->next;             pHead->next=pre;             pre=pHead;             pHead=nex;         }         return pre;     } }; 自测测试和提交代码都可以使用,但是就是没办法进入调试,我的很多都是这个样子,不知道是什么原因
点赞 回复 分享
发布于 2021-08-29 22:59
突然无法调试了!!!不知道为什么
点赞 回复 分享
发布于 2021-08-31 18:28
心态炸裂。牛客网编写c++代码不能进行调试了么? 牛客网不能调试代码了么?之前还好好的。 很简单的语句,却显示“已调试中断,重新调试”。这个程序经过测试是可以成功运行的。本人自己在其他题目也进行了同等的调试,也不行。包括使用谷歌浏览器和360浏览器。
点赞 回复 分享
发布于 2021-09-02 10:44
结束调试,从调试状态刚退出来时,滚动条无法到达最底部,无法查看最底部代码。只有再把底部那个,我圈的地方的高度拉动,变化之后,再滚动编辑区才能查看最底部代码
点赞 回复 分享
发布于 2021-09-06 21:13
没有用
点赞 回复 分享
发布于 2021-09-08 23:15
这个东西不灵
点赞 回复 分享
发布于 2021-09-08 23:17
一直无法调试
点赞 回复 分享
发布于 2021-09-21 00:42

相关推荐

11 15 评论
分享
牛客网
牛客企业服务