to print the javascript stack trace. I hope this helps.
On Tuesday, November 20, 2012 6:48:54 AM UTC+1, Mark Yap wrote:
> Hi,
> My embedded V8 application sometimes crashes without any backtrace info
> when I debug the crash file in gdb. Is
> there any setting that needs to be enabled to get backtrace info so that
> it is easier to debug? I'm using debug version of v8.
> The program below crashes with the below back trace if I fail to set the
> arguments when calling a javascript function. Is there any easier way to
> debug v8 when crashes with back traces like this occur?
> (gdb) bt
> #0 0x31a213ea in ?? ()
> #1 0x5d334f11 in ?? ()
> #2 0x5d3354c5 in ?? ()
> #3 0x31a21381 in ?? ()
> #4 0x0000000c in ?? ()
> #5 0x00000000 in ?? ()
> ####
> Handle<Value> LogCallback(const Arguments& args)
> {
> String::Utf8Value val(args[0]);
> cout << *val << endl;
> return v8::Undefined();
> }
> int main()
> {
> char *str = " function myfunc(obj) { log('in myfunc....' + obj); }
> ";
> HandleScope handleScope;
> // set global template
> Handle<ObjectTemplate> globalTemplate = ObjectTemplate::New();
> globalTemplate->Set(String::New("log"),FunctionTemplate::New(LogCallback));
> // Create conext and enter
> Handle<Context> context = Context::New(NULL, globalTemplate);
> Context::Scope contextScope(context);
> // Compile Script
> Handle<String> scriptString = String::New(str);
> Handle<Script> compiledScript = Script::Compile(scriptString);
> // Run script
> Handle<Value> result = compiledScript->Run();
> Handle<Value> value = context->Global()->Get(String::New("myfunc"));
> Handle<Function> function = Handle<Function>::Cast(value);
> int argc = 1;
> Handle<Value> args[argc];
> // Commenting the below line causes crash with no stack info
> //args[0] = String::New("teststring");
> function->Call(context->Global(), argc, args);
> return 0;
> }
> ####
> Thanks,
> Mark