1

我刚刚从 Ubuntu 12.04 更新到 13.04,并且在迁移一些过去可以工作的代码时遇到了问题。谷歌搜索并没有发现任何明显相关的东西,除了一些晦涩的 R 引用,虽然我的项目确实使用了 RI,但并不期望它会在迁移中出现。我以前从未处理过调试段错误,更不用说在 3rd 方代码中了。我应该如何进行?

(project)ben@Watt:~/Projects/project/project$ python project/manage.py migrate
Error: 'rho' must be an environment not NULL: detected in C-level eval
Segmentation fault (core dumped)

编辑:它看起来像 rpy2 的问题,使用下面答案中的 ltrace 找到。仍然想知道这是如何在迁移中出现的。

EDIT2:我的 R 版本已经更新超出了 Rpy2 的喜好。恢复固定的东西。这在 ./manage.py migrate 中是如何出现的对我来说很神秘。

4

2 回答 2

3

我会从使用开始,strace因为它已经安装在许多系统上。这可能使您能够根据所做的系统调用来缩小当前正在执行的模块的范围。例如

$ strace -o ~/tmp/strace.log -f python project/manage.py migrate

或者,安装ltrace并查看调用顺序。

$ sudo apt-get install ltrace
$ ltrace python project/manage.py migrate

如果做不到这一点,由于核心已被转储,您可以在核心上使用 gdb 来查看问题发生的确切位置

$ gdb core

使用命令,例如bt显示堆栈跟踪。为了使这更容易,您可能需要找到具有可用调试符号的可执行文件/库。

于 2013-10-01T23:32:11.020 回答
1

在 R-3.0.2 中,R 的 C-API 发生了变化。升级你的 rpy2 版本。有关详细信息,请参阅有关 bitbucket 的问题 #150

于 2013-10-02T01:53:33.877 回答