Hi Adam
It sounds like you're running the release version of the library.  Try
building with 'mode=debug', that should give you debugging support.

If you've added this code immediately after the version function is
set in the shell sample then the problem is probably that no context
has been created yet.  You can only create instances after you've
entered a context so if you just move the instance creation to after

  v8::Context::Scope context_scope(context);

I think it will work.


-- Christian

On Tue, Oct 21, 2008 at 8:43 AM, Adam Nichols <[EMAIL PROTECTED]> wrote:
>
> I'm trying to get a feel for how to create a C++ class and make it
> available in JS.  I was able to do this with a simple C++ function,
> but I'm having some trouble with the objects.  I'm following the
> embedding guide directly and merely modifying shell.cc; when the code
> gets to this line (v8::Local<v8::Object> obj = point_template-
>>NewInstance();) it segfaults.  I've tried tracing though with gdb,
> and it gets somewhere into ObjectTemplate::NewInstance() but I don't
> have line numbers or anything available.
>
> Here's the code from shell.cc after binding the version function:
>  // This is me including my own custom C++ class and giving access to
> JS
>  v8::Handle<v8::ObjectTemplate> point_template =
> v8::ObjectTemplate::New();
>  point_template->SetInternalFieldCount(1); // each JS var will be
> connected to one C++ object
>  // all JS objects should have x and y values
>  point_template->SetAccessor(v8::String::New("x"), getXValue,
> setXValue);
>  point_template->SetAccessor(v8::String::New("y"), getYValue,
> setYValue);
>  Point* p = new Point();
> printf("Everything is OK\n");
>  point_template->NewInstance();
> //  v8::Local<v8::Object> obj = point_template->NewInstance();
> printf("Everything is *not* OK\n");
> //  obj->SetInternalField(0, v8::External::New(p));
>
> The Point class is the same as the example except I made the members
> private and gave them accessors.  getXValue, getYValue, setXValue, and
> setYValue are all pulled from the embedding guide (except they use the
> accessors to get/set values instead of a simple assignment operator).
>
> My question is this: how can I debug the v8 lib (and have line numbers
> source code available to gdb, etc)?  Also, if anyone knows why it's
> segfaulting, I'm a bit curious where I've gone awry.
>
> Thanks,
> Adam
> >
>

--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to