[Rd] Strange behavior of C compiled program
Duncan Murdoch
murdoch at stats.uwo.ca
Mon Feb 9 11:23:52 CET 2009
On 09/02/2009 4:05 AM, Christophe Genolini wrote:
> Thanks, that was a stupid mistake (I did not know that this is so
> important).
>
> So I still have a problem realy more complex and I do not know was is
> wrong. I am running a .C procedure in a R loop.
> After 4, 5 or sometimes 6 call to the C procedure, Rgui crash (it closes
> asking me if I want to send a report to Microsoft).
> Is there a debuger that can run the C code with some R in it ? And what
> kind of mistake can provoque such a crash ?
Debugging C code in R on Windows is a little painful. valgrind doesn't
run on Windows (as far as I know), and none of the commercial debuggers
support the debug format that gcc uses. However, you can run gdb, and
it mostly works. See my page
http://www.stats.uwo.ca/faculty/murdoch/software/debuggingR/
for details. (I use the Cygwin version of gdb, but it usually gets the
backtrace wrong if you look for a stack dump. I understand the MinGW
version is better at that, but I've been unable to get the Insight
graphical front end to work with it. I'd love to hear from someone who
has a modern graphical front end working for debugging MinGW code on
Windows.)
Duncan Murdoch
>
> Thanks
> Christophe
>
>
> So I thaught that I find t
>> On 08/02/2009 5:37 PM, Christophe Genolini wrote:
>>> Hi the list,
>>>
>>> I need to include some C code in R, but the behavior of the C code is
>>> strange : Here is my code :
>>> --- 8< ---
>>> Rprintf("\n XXXX mTraj=%f
>>> mClus=%f",mTraj[i+nbId*c],mClustersCenter[j+nbClusters*c]);
>>>
>>> Rprintf("\nDistA=%d Tmp=%d",dist,tmp);
>>> tmp = mTraj[i+nbId* c] - mClustersCenter [j+nbClusters* c];
>>>
>>> Rprintf("\nDistB=%d Tmp=%d",dist,tmp);
>>> dist += (tmp * tmp);
>>>
>>> Rprintf("\nDistC=%d Tmp=%d",dist,tmp);
>>> --- 8< ----
>>>
>>> Herer are the stranges results it gives :
>>>
>>> XXXX mTraj=1.000000 mClus=3.000000
>>> DistA=0 Tmp=0
>>> DistB=0 Tmp=0
>>> DistC=0 Tmp=1074790400
>>>
>>> I ask on a C chat, but no one can answer me.
>>> Any idea of what wrong ?
>> You likely have the wrong types for the variables you're printing. In
>> C, the format has to match the type of the variable; if you use the
>> wrong one, you get garbage.
>>
>> Duncan Murdoch
>>
More information about the R-devel
mailing list