问题描述
|
在MRI Ruby 1.8.7中故意造成段错误的最简单方法是什么?
解决方法
您可能会签出segfault4r(它的最新更新于2007年)。您必须手动下载并安装gem,因为RubyGems无法使用它。
, 您可能编写了一个错误的C模块,该模块取消引用了NULL指针。
, 根据您的需求(和环境),可以使其运行,找到解释程序的进程ID并执行以下操作:
$ kill -s SIGSEGV $pid
我只是在OSX上使用bash进行了尝试,它在ed(1)(一个真正的文本编辑器)过程中起作用。
您也可以在调试器中运行Ruby,然后手动将一个或两个指针设置为零。变量中的指针之一会很好地执行。当然,您可能需要使用调试符号构建解释器,并且您需要了解有关解释器内部的一两件事。
, 如果您要针对特定的补丁程序级别执行此操作,请查看Ruby \的错误跟踪器,以查找在创建该补丁程序级别之后导致分段错误的错误。在查看1.8.7时,您可能想要查看归类为Ruby 1.8的那些。
例如,对于Windows计算机上的Ruby(1.9)版本,)1足以引起段错误,我认为它也适用于Ruby 1.8。