如何使用代码调试?

牛客编程页现在已经支持代码调试功能(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
提一个建议,每次要查看数组的时候,把数组点开,然后程序运行下一步的时候数组那一栏又收起来了,不太方便
2 回复 分享
发布于 2022-01-15 22:22
java提示执行超时,调试已结束
2 回复 分享
发布于 2021-09-11 14:48
JS Node 和 JS V8都没有调试按钮,咋回事,不支持吗?
1 回复 分享
发布于 2025-03-13 08:57 广东
为什么考试模式下不让打断点调试啊?那意味着笔试上机就没法打断点了嘛?
1 回复 分享
发布于 2024-09-21 16:39 辽宁
Scanner in = new Scanner(System.in); java io输入输出的压根不能调试啊 能不能修复下啊
1 回复 分享
发布于 2022-05-24 22:48
Scanner in = new Scanner(System.in); java io输入输出的压根不能调试啊 能不能修复下大哥
1 回复 分享
发布于 2022-05-24 22:48
JavaScript Node 没有调试了吗
点赞 回复 分享
发布于 2025-06-13 23:25 陕西
为什么一调试就出错 还没到断点位置呢
点赞 回复 分享
发布于 2025-04-04 21:19 江苏
调试数组和输出数组不一致,代码是输出数组m,但是调试显示的和自测的不一致。 题目:https://www.nowcoder.com/practice/5b58a04679d5419caf62c2b238e5c9c7
点赞 回复 分享
发布于 2024-03-10 23:00 河南
mysql点击“查看全部”查看不了测试样例,返回了“暂时不支持对比”
点赞 回复 分享
发布于 2024-01-18 08:49 北京
verilog不能调试
点赞 回复 分享
发布于 2023-12-26 17:36 天津
python3调试不了 代码就算AC了 进入调试也是显示编译错误
点赞 回复 分享
发布于 2023-12-09 11:35 福建
哪位大佬能帮忙解答一下我的这个疑问
点赞 回复 分享
发布于 2023-11-11 17:19 江苏
未通过的用例比较长的,都不支持查看内容吗,没办法定位错误
点赞 回复 分享
发布于 2023-11-11 00:11 上海
我用的c#这俩天都不可以调试 但是都能跑完
点赞 回复 分享
发布于 2023-08-29 15:31 浙江
JavaScript 是没有JavaScript v8么?只能在node环境下编辑吗?
点赞 回复 分享
发布于 2023-08-07 16:24 北京
Stop reason: signal SIGSEGV: invalid address (fault address: 0x53d2a18) swift代码调试一直报这个错误呢,一直中断
点赞 回复 分享
发布于 2023-08-06 11:57 广东
调试时为啥一直显示“编译出错”,即使代码提交为ac再调试也是这样,而且有的题可以进行调试,大部分的都这样,无法进行调试(ac的代码!!!)还有在进行“题目纠错”时,一直显示“网络异常,请稍后重试”,这又是啥情况
点赞 回复 分享
发布于 2023-07-28 16:58 陕西

相关推荐

网安小厂,只有技术面HR面,岗位是Golang运开,特点是30-50%时间驻场,其他时间公司做开发。都是些小厂经典问题,比较简单。HR特别在意到岗时间,电信这边离职流程才走完30%,个还得一个月才能到岗...1.自我介绍2.在职状态3.goroutine和channel是什么,工作中怎么使用这两种东西协作的?答了基础概念、异步任务、阻塞、超时取消之类的东西4.有缓冲的channel和无缓冲的channel区别是什么?答了阻塞、缓存两种作用以及讨论了在关闭时收发的情况5.defer关键字的执行顺序?先进后出6.自定义错误处理你自己设计过吗?我在自己的开源工具包里面封装过一个,用于处理不同业务类型的错误。首先是错误接口的结构体,包含code错误码、type错误类型、msg错误信息、err原始错误,然后是New()声明错误实例,Error()返回自定义错误,NewWithType()自定义错误类型,NewWithCode(),UnWarp()拿到原始错误,Is()判断两个错误是否一致7.内存管理和垃圾回收机制答了三色标记法的原理和4个流程(初始标记、并发标记、重新标记和并行清理)以及那个流程会导致STW。答了debug.SetGCPercent设置GC频率,值越高GC频率越低,debug.SetMemoryLimit设置内存限制,用sync.pool可以复用来减少内存消耗8.Go的Map并发安全吗?若不安全怎么实现一个并发安全的Map?不安全,Go自带sync.Map是轻量级的安全的map。如果要实现可以用atomic包的原子方法或者CAS自旋锁来实现,最简单的方式是用mutex和RWMutex来进行加锁9.我看你的项目用了SOA架构,什么是SOA架构为什么这样设计?10.看你用的最多的是Fiber框架,为什么选这个框架,和Gin框架有什么区别?Fiber在25年后端框架性能排名第28,,而Gin在230名左右。Fiber使用的是类似Express.js的异步模型所以性能高,但是有致命弱点是计算密集型任务下会导致整个进程阻塞,核心优化点是在加密之类的计算密集型任务时需要开协程执行避免阻塞,但是高并发需要控制并发量避免大量goroutine使资源耗尽11.多线程任务、定时任务如何排查错误?还没上线的就打断点debug,压测工具看那一部分出问题了或者每一部分都写好单元测试保证代码质量。上线的就查时序指标图、数据库最近记录、日志,哪个定时任务的记录断了就说明问题出在这一块12.pprof你用过吗?pprof是标准库,默认开的端口是6060,go tool pprof ...就可以进行分析,也可以导出本地数据,像是Gin、Fiber这样的框架都有官方认可的pprof中间件,直接使用即可。13.自己部署过CI/CD这种流水线吗?没有,自己平时用Git,实习公司用的SVN,在实习公司也给非技术人员部署过Windows环境的SVN仓库。14.以前参加过驻场开发是吧?在深圳、广州、佛山、厦门轮流驻场过,大概10月到年底验收结束15.有了解过网安相关的开发吗?了解过一点,我平时WAF接触的多一点,封装过CorazaWAF来作为轻量***,玩过长亭雷池、1Panel、宝塔,以前会配nginx,现在能简单写一点openresty配置。用过UFW、iptables,***的原理懂一点,包括QUIC、openssl、零信任的概念16.C++了解多少?多久能上手?会调试吗?平时只用来做题没学过开发相关内容,有基础,一个月左右,大学选修课学过linux环境GDB调试不过现在忘了17.愿意走go+CPP或者go+Rust的双栈路线吗?愿意18.Docker用的比较熟练是吧?什么程度?了解过K8S,平时基本都用Docker-Compose,很少直接使用Docker启动镜像。了解过怎么构建镜像19.讲讲Docker-compose我最近做新项目有去docker-compose的仓库看过,目前最新版本v5.0.1,v3、v4版本被官方放入遗产仓库,追求稳定选择v2版本追求性能选择v5。docker-compose是一个轻量级的容器编排器,多用于单机部署,毫秒级启动,通过写好的docker-compose.yaml来定制化启动镜像,可以配置持久化目录、限制cpu和内存、健康检查等20.Docker的网络模式有几种?bridge桥接,宿主机、容器、容器间通信,有独立ip;none无网络通信,适用于离线计算之类的容器;container,容器组里面的容器可以通信;overlay,跨主机的容器通信,多用于分布式;还有个忘了(应该是host,同桥接但是无独立ip,宿主机和容器共享,多用于高性能应用)21.你做的这个开源工具包是干嘛的怎么设计的?这个开源工具包是做的SteamWebAPI的上层封装,帮助有此需求且使用Go的开发者快速接入。因为Steam官方的SDK仅提供C++版本,并且文档极其简略,根据25年一年的接入经验就做了这个。统一初始化入口,链式配置,用于初始化实例,第一层接口分为dev(接入api.steam...)、store(接入store.steam...)、crawler(爬虫)、A2S、util(相关开发工具)5个模块。每个模块都有自己的通用方法,可以请求到原始字节流,使用泛型将原始字节流转换为原始模型,原始模型到精简模型的转换,包括各种图片字段返回的后缀拼接官方目前使用的前缀的url预处理。爬虫模块二次封装gocolley,有自己独立的链式配置,默认开启自定义的退避规则、IP池轮转、User-Agent轮转、refer轮转等,提供通用爬取方法和保存本地文件的方法。A2S是封装了官方推荐的三方A2S库,该库遵循SteamA2S规则可以请求到游戏服务器的相关数据,可以用于开发查服器等工具。Util是封装了一些SteamAPI开发中大概率会用到的工具方法,包括BBCode、HTML、MD三者间的转换、令牌的获取等。此外还封装了专属的错误以及Zap日志。已实现的接口双语文档覆盖率100%22.你写的这个压缩工具是干嘛的?怎么实现的?这是我在学习Cobra CLI框架的时候原创的一个实战练习的课件。这个小工具核心功能是压缩/解压缩/加密/解密,提供zip、7Z、tar.gz三种压缩,支持批量、分卷等操作,加密支持AES、DES,其中还用到了PBKDF2秘钥派生低等技术,后续根据这个项目我还封装了一个支持MD5、PBKDF2、Argon2、Scrypt、Bcrypt五种方式加密和验证的工具包并做了基准测试,在CSDN的文章可以看到源码23.看你对redis、kafka、es都熟悉,简单讲讲es的工作原理ES对文本内容使用了分词的技术把每个词前缀提取出来通过倒排表建立倒排索引,这样可以根据搜索词快速找到对应的文章,不过我做过的项目都比较小用不到ES,我平时都使用PGSQL的向量来建立Gin倒排索引来进行查询的。24.Redis平时怎么用的?Redis有很多数据类型,Zset可以用来做排行榜,bitmap可以用来记录极大数据量的用户签到,Geo可以存储地理位置,Stream可以传输流式数据作为生产者和消费者,redis的原子性操作还可以用来做自增。但redis用的最多的还是用于缓存键值,避免流量直接打到数据库上,我用的最多的适用于存储JWT和存储网站每个模块主页面上永不过期的热点数据。25.什么时候会用到kafka?我在监控项目中使用kafka比较多,kafka主要用作于流式数据的传输和消息队列,比如采集/停止指令的下发,告警状态的推送,此外kafka最大的优势是削峰填谷,在业务高峰期存储处理不过来的请求,在业务低峰期逐步消费26.哪些GPT用的多?都怎么用的?国产豆包国外GPT,专门写代码的暂时没用过。最开始会让AI提供一些技术方案,审核后选出一套适合当前场景的,让AI搭建原始架构,我在每一个部分进行定制化修改,然后让AI再次评估漏洞我再次审核和修改,重复这个流程,经过几次迭代整个架构就基本成型了。27.看你现在是网络工程师维护做得多,平时有做开发吗?下班之后至少一半时间是在做开发,有一份开发的兼职工作。28.反问(公司业务、项目组近况)网安公司、驻场二开+运开,基本都在成都本地驻场,军工项目会封闭式开发,单次最多驻场1个月。部门刚成立,就面试官一个人,忙不过来了29.到岗时间?之前薪水?公积金比例?上周已提离职,最快2月初(可恶的电信,下辈子再去电信基层直接跳了),税后6000包吃住最高档6险2金。HR问了我几次有没有可能提前回成都,大致是过了,但是确实国企离职效率极其低下,不可抗力,暂时没有下文。
查看28道真题和解析
点赞 评论 收藏
分享
被说“做题家”,你的反应...
点赞 评论 收藏
分享
评论
11
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务