2012-01-18 2 views
2

Я написал некоторый код в виде пакета. Когда я пытаюсь выдать R CMD install mypkg это дает ошибки, такие какrunning R CMD install with gdb to debug malloc error

* installing to library ‘/Users/USERNAME/R/x86_64-apple-darwin11.0.0-library/2.14’ 
* installing *source* package ‘mypkg’ ... 
** libs 
*** arch - x86_64 
make: Nothing to be done for `all'. 
installing to /Users/USERNAME/R/x86_64-apple-darwin11.0.0-library/2.14/mypkg/libs/x86_64 
** R 
** preparing package for lazy loading 
** help 
Warning: /Users/USERNAME/temp/mypkg/man/mypkg-package.Rd:31: All text must be in a section 
Warning: /Users/USERNAME/temp/mypkg/man/mypkg-package.Rd:32: All text must be in a section 
*** installing help indices 
** building package indices ... 
** testing if installed package can be loaded 
R(57533) malloc: *** error for object 0x1110005e0: pointer being freed was not allocated 
*** set a breakpoint in malloc_error_break to debug 
sh: line 1: 57533 Abort trap: 6   '/opt/local/lib/R/bin/R' --no-save --slave < /var/folders/2f/kxqs800n6rq09nrm8_t637g40000gr/T//Rtmp6McNDz/filee0b91bc7fa41 
ERROR: loading failed 
* removing ‘/Users/USERNAME/R/x86_64-apple-darwin11.0.0-library/2.14/mypkg’ 

Чтобы понять это, я попытался запустить R CMD с БГД, но безрезультатно

$ R -d gdb 
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Thu Nov 3 21:59:02 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ... 
(gdb) start CMD install mypkg 
<-gdb intro -> 
Breakpoint 1 at 0x100000ef4: file Rmain.c, line 30. 
Starting program: /opt/local/lib/R/bin/exec/x86_64/R CMD install mypkg 
Breakpoint 1, main (ac=4, av=0x7fff5fbff9a8) at Rmain.c:30 
30  R_running_as_main_program = 1; 
(gdb) c 
Continuing. 
ARGUMENT 'CMD' __ignored__ 

ARGUMENT 'install' __ignored__ 

ARGUMENT 'mypkg' __ignored__ 

Reading symbols for shared libraries . done 

R version 2.14.1 (2011-12-22) 
Copyright (C) 2011 The R Foundation for Statistical Computing 
ISBN 3-900051-07-0 
Platform: x86_64-apple-darwin11.0.0/x86_64 (64-bit) 

R is free software and comes with ABSOLUTELY NO WARRANTY. 
You are welcome to redistribute it under certain conditions. 
Type 'license()' or 'licence()' for distribution details. 

R is a collaborative project with many contributors. 
Type 'contributors()' for more information and 
'citation()' on how to cite R or R packages in publications. 

Type 'demo()' for some demos, 'help()' for on-line help, or 
'help.start()' for an HTML browser interface to help. 
Type 'q()' to quit R. 

Reading symbols for shared libraries . done 
Reading symbols for shared libraries . done 
> 

Аналогично, R -d gdb CMD install mypkg и R CMD install mypkg -d gdb также не работает. Мои вопросы:

  1. Как запустить R CMD install под gdb?
  2. Есть ли другой способ отладить эту ошибку, кроме как в gdb?

ответ

4

ошибка не происходит в установиться, это происходит при загрузке пакета, так что вы можете просто запустить

R CMD INSTALL --no-test-load mypkg 
R -d gdb 
> library(mypkg) 

для отладки, еще один полезный инструмент для проблем с памятью является valgrind.

Но обратите внимание, что ваш пакет грязный, поэтому вы должны рассмотреть возможность его очистки и вместо этого использовать R CMD build mypkg && R CMD INSTALL --no-test-load mypkg_x.y.tar.gz.

0

Хотя проблема не в установке, а в управлении или нагрузочного тестирования пакет как отметил @Simon, я думал, что я мог бы разделить способ установки, находясь под управлением GDB, отвечая на мой первый вопрос,

  1. Как запустить R CMD install под gdb?

Сначала просто построить пакет, выполнив R CMD build mypkg с образованием mypkg_x.y.tar.gz, а затем сделать

R -d gdb 
>install.packages('path\to\package\mypkg_x.y.tar.gz')