我有一个生成两个线程的 ruby 程序。很少,它似乎挂在主线程上,我正在尝试使用 gdb 找出原因。
使用此处的博客文章,我使用 gdb 附加到进程,并调用rb_backtrace()
以获取回溯。
问题是,回溯总是来自产生的工作线程之一,而不是我遇到挂起的主线程。
有没有办法从特定线程获取回溯?
我曾尝试使用 gdb 命令info threads
并thread 2
更改活动线程,但它没有效果。我也尝试过ruby_eval
在 gdb 中使用定义,如此处所述,但是每当我尝试评估一行 ruby 代码时,我都会收到错误No symbol table is loaded. Use the "file" command.
因为我正在使用嵌入式系统,所以我无法轻松地使用 gdb 符号重新编译 ruby。