1

为了我的理智,有人可以验证我在飞镖编辑器中遇到的一个奇怪的错误吗?

我正在使用网站主页上最新的 dart 编辑器,我下载、解压缩,然后运行“DartEditor”可执行文件。(我没有清除存储在其他地方的任何先前设置,但我认为这不会改变问题。)

Dart Editor version 1.0.0_r30798 (STABLE)
Dart SDK version 1.0.0.10_r30798
  • 下载我的存储库:https ://github.com/Naddiseo/dart-sprintf.git
  • 切换到 debugger_ide_test 分支
  • 在控制台(不在编辑器中)运行dart test/sprintf_test.dart输出应该是:

    decimal=1, exp=0, digits=[5, 4, 6, 6]

  • 接下来,启动编辑器,然后打开文件夹。

  • 运行相同的文件,它应该打印出相同的结果。
  • 现在是奇怪的部分。在 lib/src/formatters/float_formatter.dart:17 中设置断点,这是构造函数的第一行。
  • 再次在编辑器中运行测试文件,然后在获得断点后继续。

使用断点,我得到以下输出:

decimal=1, exp=0, digits=[0, 0, 5, 4, 6, 6]

我把它归因于List<String>构造函数,它似乎初始化为不为空。

还有其他人遇到这个问题吗?我试图将其压缩成一个可测试的单个文件,但未能重现;我只能在实际项目中重现它。

4

1 回答 1

1

绝对听起来像一个错误。正如 Fox32 建议的那样,请在http://dartbug.com/new上提交错误。

通常这些错误的发生有两个原因:

  • 调试器有副作用:如果调试器(这里是 Dart 编辑器)调用toString可见变量的实际方法,它可能会产生副作用。大多数情况下,这发生在Iterable具有副作用的 s 上。
  • 虚拟机在调试时出现错误。VM 必须以不同的方式编译代码(例如禁用某些优化)才能在任意位置停止。可能是您的断点在那里触发了一个错误。
于 2013-12-15T12:35:14.830 回答