设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

请问下如何根据运行游戏时的报错提示定位script脚本的错误

查看数: 2693 | 评论数: 5 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-10-7 04:11

正文摘要:

每次测试运行游戏报错都不知道是脚本里哪里出错的... 所以想求个脚本,一旦报错就能定位出错误的语句和位置 大神们要是有现成的话就分享个给咱吧,多谢了! ...

回复

taeckle 发表于 2019-10-17 12:22:24
继续求一个能定位到行的报错脚本................


taeckle 发表于 2019-10-8 23:15:22
hyrious 发表于 2019-10-7 11:10
1. 修改 Main,在最后一个 end 前添加一段捕捉错误的代码:
和本来就有的 rescue Errno::ENOENT 对齐放
2. ...

求大神再发一个定位出脚本出错的位置吧
soulsaga 发表于 2019-10-7 15:17:31
本帖最后由 soulsaga 于 2019-10-7 15:20 编辑

可以定位事件脚本的事件位置么..
hyrious 发表于 2019-10-7 11:10:43
1. 修改 Main,在最后一个 end 前添加一段捕捉错误的代码:
  1. rescue Exception => e
  2.   [email protected] if $@
  3.   msg = ["#{e.class}: #{e.message}"]
  4.   e.backtrace.each do |c|
  5.     break if c[':1:']
  6.     if c =~ /^(.+):(\d+)(?::in `(.*)')?$/
  7.       file, line, code = $1, $2, $3
  8.       next if file == __FILE__
  9.       cd = Regexp.escape(File.join(Dir.getwd, ''))
  10.       file = file.sub(/^#{cd}/, '')
  11.       if inner = file =~ /^Section(\d+)$/
  12.         id = $1.to_i
  13.         file = "[#{$RGSS_SCRIPTS[id][1]}]"
  14.       end
  15.       code = code && ": #{code}"
  16.       msg << "   #{file} #{line}#{code}"
  17.     else
  18.       msg << "   #{c}"
  19.     end
  20.   end
  21.   print msg.join("\n")
复制代码
和本来就有的 rescue Errno::ENOENT 对齐放
2.修改 Interpreter 7,在 def command_355 对应的 end 前添加以下代码,方便输出报错事件的位置
  1.   rescue Exception
  2.     event = get_character(@event_id)
  3.     print "Map: #{@map_id}, Event: #{@event_id} (#{event.x}, #{event.y})"
  4.     raise
复制代码

效果大致如下:


点评

大佬你这个报错脚本不能精确到行,只能精确到类或者方法啊  发表于 2019-10-17 12:23

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!请受小弟一拜!

查看全部评分

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-4-13 08:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表