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

Project1

 找回密码
 注册会员
搜索
查看: 2741|回复: 9
打印 上一主题 下一主题

[已经过期] 请问下如何根据运行游戏时的报错提示定位script脚本的错误

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2019-10-7 04:11:49 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
每次测试运行游戏报错都不知道是脚本里哪里出错的...

所以想求个脚本,一旦报错就能定位出错误的语句和位置

大神们要是有现成的话就分享个给咱吧,多谢了!

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
6
 楼主| 发表于 2019-10-17 12:22:24 | 只看该作者
继续求一个能定位到行的报错脚本................


回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
5
 楼主| 发表于 2019-10-15 03:01:41 | 只看该作者
本帖最后由 taeckle 于 2019-10-15 03:02 编辑
soulsaga 发表于 2019-10-7 15:17
可以定位事件脚本的事件位置么..


大神请问下报错定位可以到行的脚本你有嘛,比如像这个:

报错.PNG (4.33 KB, 下载次数: 9)

报错.PNG

点评

默认就有行..默认就有行..说多少次都好..默认就有行..  发表于 2019-10-17 12:49
默认的没如此精准定位到行啊  发表于 2019-10-15 22:04
这个不是默认就有么...  发表于 2019-10-15 09:57
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
4
 楼主| 发表于 2019-10-8 23:15:22 | 只看该作者
hyrious 发表于 2019-10-7 11:10
1. 修改 Main,在最后一个 end 前添加一段捕捉错误的代码:
和本来就有的 rescue Errno::ENOENT 对齐放
2. ...

求大神再发一个定位出脚本出错的位置吧
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
3
发表于 2019-10-7 15:17:31 | 只看该作者
本帖最后由 soulsaga 于 2019-10-7 15:20 编辑

可以定位事件脚本的事件位置么..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
2
发表于 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, 2024-11-27 10:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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