Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取Ruby解释器调用堆栈?_Ruby_Interpreter_Callstack - Fatal编程技术网

如何获取Ruby解释器调用堆栈?

如何获取Ruby解释器调用堆栈?,ruby,interpreter,callstack,Ruby,Interpreter,Callstack,我试图在Ruby解释器执行时获取其调用堆栈。例如,我在foo.rb中有一些ruby代码,当我通过$ruby foo.rb使用一些选项(如果有的话)执行它时,我想得到执行解释器的哪些函数 我发现这篇()很好的文章与我的问题相关,并提供了一些我应该如何处理的想法,但我不太确定我应该如何做 基本上,本文是说“在编译Ruby时,在vm_opts.h头文件中打开OPT_CALL_THREADED_代码开关 ruby_run_node call stack”来获取调用堆栈,但我并不真正理解“openopt_

我试图在Ruby解释器执行时获取其调用堆栈。例如,我在
foo.rb
中有一些ruby代码,当我通过
$ruby foo.rb
使用一些选项(如果有的话)执行它时,我想得到执行解释器的哪些函数

我发现这篇()很好的文章与我的问题相关,并提供了一些我应该如何处理的想法,但我不太确定我应该如何做

基本上,本文是说“在编译Ruby时,在vm_opts.h头文件中打开OPT_CALL_THREADED_代码开关 ruby_run_node call stack”来获取调用堆栈,但我并不真正理解“openopt_call_THREADED_CODE”的含义

我确实看过vm_opts.h,但它没有说明多少

这个问题是一个非常具体的主题,但如果有人知道我如何以任何方式或使用本文建议的方法获取调用堆栈,请在这里帮助我


谢谢你的帮助

对于执行期间的调用堆栈(唯一“调用堆栈”有意义的地方),可能在处重复。但您的示例听起来好像需要一个执行概要文件,在这种情况下是相关的,还有更多细节。@Amadan感谢您的评论和帮助。这两个链接将有助于我下一步的研究,所以我很高兴有他们。然而,两者都是处理用户编写的ruby代码,而不是ruby解释器本身。我正在寻找执行的解释器的函数调用堆栈。非常感谢你的帮助!在这种情况下,您将希望编译自己的Ruby,未经优化,调试符号未剥离。然后你会得到同样的选择:你想要在执行中的特定点进行堆栈跟踪(使用gdb并设置断点),还是想要执行配置文件(你在编译时还需要
-pg
选项,然后使用
gprof
)。@Amadan我肯定可以使用gdb设置断点并从那里进行跟踪。直到现在,我才意识到
-pg
gprof
。谢谢你的帮助!对于执行期间的调用堆栈(唯一“调用堆栈”有意义的地方),可能在处重复。但您的示例听起来好像需要一个执行概要文件,在这种情况下是相关的,还有更多细节。@Amadan感谢您的评论和帮助。这两个链接将有助于我下一步的研究,所以我很高兴有他们。然而,两者都是处理用户编写的ruby代码,而不是ruby解释器本身。我正在寻找执行的解释器的函数调用堆栈。非常感谢你的帮助!在这种情况下,您将希望编译自己的Ruby,未经优化,调试符号未剥离。然后你会得到同样的选择:你想要在执行中的特定点进行堆栈跟踪(使用gdb并设置断点),还是想要执行配置文件(你在编译时还需要
-pg
选项,然后使用
gprof
)。@Amadan我肯定可以使用gdb设置断点并从那里进行跟踪。直到现在,我才意识到
-pg
gprof
。谢谢你的帮助!