This has gone above my pay grade. If it were me I would simplify and
work all in x11 or all in xcode but not both. Gdb works great from
the command line or there are some gui x11 gdb front ends.
Sorry out of ideas and knowledge.
Neil
On Jul 8, 2009, at 10:53 AM, Duncan Murdoch wrote:
On 08/07/2009 10:20 AM, Neil Tiffin wrote:
Duncan,
I am not sure that even if you answer these questions that I can
help, but I'll try.
How did you start gdb? What commands? Exactly what process did
you attach to? What is in xcode and what is not?
I started R in an xterm, and ran system("ps") to find its process
ID. I also ran library(rgl) to get it loaded.
I started Xcode on a project that imports a bunch of files from R
and rgl.
I started gdb by menu in Xcode: Run | Attach to process | Process
ID...
This immediately breaks showing a bunch of assembler, because Xcode
doesn't know the connection between the R source and the binary. (I
have had more success doing this on a build of R I made myself, but
in this case I'm using Simon's, and I get lots of warnings in the
gdb console that it can't find the source in directories on his
system named things like /Builds/Rdev-web/QA/Simon/... . I don't
want to debug R this time, so I have ignored those. I want to debug
rgl.
All of the rgl source code has been added to the Xcode project,
using Project | Add to project.
How exactly are you trying to set the break point? And what does
gdb respond with when you set it from the command line?
I try to set the breakpoint by clicking in the left margin of one of
the source files. I haven't tried doing it from the command line
until now, but it doesn't like the syntax I was trying. (How do you
specify a source file line number? Alternatively, how do you
specify a C++ method? I can set breakpoints at C functions by name,
and then Xcode does find the right source line, but rgl is mostly C++.
Was anything compiled from xcode?
No.
Was rgl.so compiled with debug symbols turned on?
I don't know: it was compiled by R CMD INSTALL rgl. I was told a
couple of years ago that symbols were included by default, but I
don't know if that's still true. I think so (based on my success
with C functions).
Was X11gui compiled with debug symbols turned on?
It's just part of rgl, so the same answer.
Xcode integration with gdb is a complicated situation. Just
because xcode can see something does not really mean that gdb can
see it, although it usually works with Apple magic. Are you
indicating that gdb can see the source file or that xcode can see
the source file?
I'm not sure who can see what. Here's the summary:
- In the gdb console, I can set a breakpoint at a C function, and
Xcode will jump to the right source line for rgl.
- I can't seem to set a breakpoint from the source display.
Duncan Murdoch
Running x11, R, and rgl all in debug mode would seem a real
challenge. Not being an x11 expert, I would also raise the
question with people familiar with X11 debugging in Mac OS X. I
would start with breakpoints only in rgl.so (which is probably
what you are trying to do) and not x11gui.cpp:300.
You might want to run gdb without xcode and see what's going on.
You'll have to wade through a bunch of command line stuff, but you
do get direct feedback without it being absorbed by xcode.
Neil
On Jul 8, 2009, at 8:53 AM, Duncan Murdoch wrote:
Neil Tiffin wrote:
You might research gdb fb command (future-break.) It allows you
to set a breakpoint in code that is not loaded when the
debugger is started. I believe you would have to use the
debugger console not the GUI with a syntax like "fb
rgl.so:function_name".
But it is loaded when I want to set the breakpoint. I can see
the source file, set a breakpoint in it, but it doesn't work. I
opened the gdb console (thanks for the suggestion), and I see
warnings like
Warning - No location found for "x11gui.cpp:300"
when I try to set a breakpoint in rgl. How do I tell it where to
find the location corresponding to that file?
Duncan Murdoch
On Jul 8, 2009, at 5:57 AM, Duncan Murdoch wrote:
I'd like to use Xcode to debug the rgl package, which is
crashing sometimes in X11 on OSX. In the past, I've done
this for debugging R itself, and have a project set up for
that. I can attach to the process ID, and then I see rgl.so
is loaded, but I can't see how to set a breakpoint in the
rgl.so code.
Has anyone else done this before? Can you point me to step-by-
step instructions?
Duncan Murdoch
_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac
_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac