为了账号安全,请及时绑定邮箱和手机立即绑定

Golang fmt.Println() 导致游戏崩溃

Golang fmt.Println() 导致游戏崩溃

Go
慕运维8079593 2021-07-16 18:01:47
我在 Go 中有这个简单的 OpenGL 程序。当我编译并运行它时,主游戏循环在因分段违规而崩溃之前经历了大约 9 次迭代。rendering for the  0  timerendering for the  1  timerendering for the  2  timerendering for the  3  timerendering for the  4  timerendering for the  5  timerendering for the  6  timeSIGSEGV: segmentation violationPC=0x7fdab95a0e29signal arrived during cgo executionruntime.cgocall(0x414f90, 0x7fdab9887e88)    /usr/lib/go/src/pkg/runtime/cgocall.c:149 +0x11b fp=0x7fdab9887e70github.com/go-gl/gl._Cfunc_glClear(0xc200004100)    github.com/go-gl/gl/_obj/_cgo_defun.c:340 +0x31 fp=0x7fdab9887e88github.com/go-gl/gl.Clear(0x4100)    /mnt/data/Dropbox/Coding/Go/src/github.com/go-gl/gl/gl.go:161 +0x25 fp=0x7fdab9887e98main.draw()    /home/josh/Coding/Go/src/github.com/JoshWillik/Wander/wander.go:120 +0x25 fp=0x7fdab9887eb8main.main()    /home/josh/Coding/Go/src/github.com/JoshWillik/Wander/wander.go:52 +0x300 fp=0x7fdab9887f48runtime.main()    /usr/lib/go/src/pkg/runtime/proc.c:220 +0x11f fp=0x7fdab9887fa0runtime.goexit()    /usr/lib/go/src/pkg/runtime/proc.c:1394 fp=0x7fdab9887fa8goroutine 3 [syscall]:runtime.goexit()    /usr/lib/go/src/pkg/runtime/proc.c:1394rax     0x0rbx     0x7fdab9887e88rcx     0x7fdab9887e88rdx     0x7fdab9887e20rdi     0x4100rsi     0xc210001900rbp     0xc21002a000rsp     0x7fdab2a4ddd8r8      0xc210001120r9      0x7fdab9887e20r10     0x0r11     0x286r12     0x0r13     0x7fdab9a74000r14     0x0r15     0x7fdab2a4e700rip     0x7fdab95a0e29rflags  0x10202cs      0x33fs      0x0gs      0x0如果我删除shouldRender函数中基于时间的逻辑,它会在崩溃前迭代大约 28-29 次。如果我删除函数gl.Clear()中的draw调用,它会在崩溃之前持续到 90 年代。如果我删除对fmt.Println()in的调用shouldRender,游戏将按预期运行而不会崩溃。(我已经测试了大约 2 到 3 分钟,所以将近 10,000 帧)这让我怀疑fmt.Println()对分段违规的调用以某种方式负责。我是否误读了这些标志?如果不是,那么核心功能怎么会Println()如此不稳定?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 493 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信