在MRI Ruby 1.8.7中故意导致段错误的最简单方法是什么?
答案 0 :(得分:3)
您可以查看segfault4r(最近一次更新于2007年)。您必须手动下载并安装gem,因为它不能通过RubyGems获得。
答案 1 :(得分:1)
您可以编写一个错误的C模块来取消引用NULL指针。
答案 2 :(得分:1)
根据您的需求(和环境),您可以让它运行,找到解释器的进程ID并执行:
$ kill -s SIGSEGV $pid
我刚刚在OSX上尝试使用bash,并且它在 ed(1)(一个真正的文本编辑器)过程中工作。
您还可以在调试器中运行Ruby并手动将指针或两个设置为零。变量中的一个指针可以很好地完成。当然,您可能需要使用调试符号构建解释器,并且您需要了解有关解释器内部的一两件事。
答案 3 :(得分:1)
如果您针对特定的补丁级别执行此操作,请查看Ruby的bug tracker以查找在创建导致分段错误的补丁级别之后报告的错误。当您查看1.8.7时,您可能希望查看those categorized as Ruby 1.8。
例如,对于我的Windows机器上的Ruby(1.9)版本,Thread.kill(nil)
是sufficient to cause a segfault,我认为它也适用于Ruby 1.8。