首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译Rcpp代码会导致分段错误

问编译Rcpp代码会导致分段错误
EN

Stack Overflow用户
提问于 2017-11-02 11:42:39
回答 1查看 291关注 0票数 0

我想在我的Rcpp代码中跟踪一个分段错误。为此,我希望实现一个“主”C++函数,并使用GDB运行我的代码。但我不能让这个主要功能发挥作用。下面是一个很小的例子:

代码语言:javascript
复制
#include <Rcpp.h>

int main (int argc, char** argv) {
    Rcp::NumericVector i;
    return 0;
};

我使用Rcpp使用的标志来编译代码:g++ -I/usr/share/R/include -DNDEBUG -I"/home/login/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -fpic -g -ggdb -O0 -fdebug-prefix-map=/build/r-base-6WVosl/r-base-3.3.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -c main.cpp -o main.o

然后是g++ -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o main main.o -L/usr/lib/R/lib -lR -g -ggdb -O0

(我尝试过几种口味:去除fpic,-Wl。)

运行main会给我一个分割错误。

GDB回溯给我

代码语言:javascript
复制
#0  0x00007ffff78f5ac5 in ?? () from /usr/lib/libR.so
#1  0x00007ffff78f6a17 in ?? () from /usr/lib/libR.so
#2  0x00007ffff78f70ad in Rf_allocVector3 () from /usr/lib/libR.so
#3  0x0000555555556856 in Rcpp::Vector<14, Rcpp::PreserveStorage>::Vector (this=0x7fffffffe1e0) at /home/login/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include/Rcpp/vector/Vector.h:58
#4  0x00005555555560ec in main (argc=1, argv=0x7fffffffe2f8) at main.cpp:7

瓦兰德建议Invalid read of size 8在同一地点。

欢迎提出任何建议。

g++是(Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406。计算机是Linux XXX 4.10.0-38-generic #42-Ubuntu SMP Tue Oct 10 13:24:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-02 11:55:06

对于Rcpp代码和底层R会话,不能在gdb上使用main():所有R对象都需要R。

所以,要么用gdb从R中调试包--作为在编写R扩展的4.4节中描述 --要么使用RInside,如果您真的认为需要一个main。

您可以使用gdb。只是不是你怎么试的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47074438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档