The handle has a field called location_ which is an Object**.  You can
dereference that and get an Object* and you can call ShortPrint on that.

I find I have to call fflush(stdout) after calling ShortPrint to actually
see the text.  Not everyone has to do this for some reason.

Den 11. jun. 2010 09.58 skrev Vitali Lovich <vlov...@gmail.com>:

> I imagine you would need $arg0->SourcePrint() instead - otherwise, since
> Handle is an actual C++ class, it'll try to find SourcePrint in Handle
> instead of in String.
>
> Thanks for the tips - hopefully this'll really help me analyze some stuff
> :).
>
> -Vitali
>
> On Fri, Jun 11, 2010 at 12:55 AM, zaheer ahmad <zaheer....@gmail.com>wrote:
>
>> Thanks soren for the Tip. This is what has worked so far (it prints
>> all Handles i.e. Handle<v8::String>, Handle<v8::internal::String>..)
>>
>> remove static qualifier from PrintLn in debug.cc (otherwise macros
>> dont recognize the function)
>> void PrintLn(v8::Local<v8::Value> value) {
>>
>> Add following to .gdbinit:
>> define ps
>> print v8::internal::PrintLn($arg0)
>> end
>>
>> (A simpler way would be to call $arg0.SourcePrint(), but that doesnt
>> work on derived objects
>> >> Error - Couldn't find method v8::Handle<v8::String>::SourcePrint
>> Its possible that GDB macros dont understand how to call virtual
>> functions..
>> )
>>
>> -------------Output
>> Breakpoint 1, ExecuteString (source={val_ = 0xa2fd6e4}, name={val_ =
>> 0xa2fd6e0}, print_result=false, report_exceptions=true) at
>> samples/shell.cc:244
>> 244       v8::HandleScope handle_scope;
>> (gdb) ps source
>> function f(){print("hello");}
>> f();
>>
>> $1 = void
>>
>>
>> Breakpoint 2, v8::internal::Compiler::Compile (source={location_ =
>> 0xa2fd6e4}, script_name={location_ = 0xa2fd6e0}, line_offset=0,
>> column_offset=0, extension=0x0, input_pre_data=0x0, script_data=
>>      {location_ = 0x0}, natives=v8::internal::NOT_NATIVES_CODE) at
>> src/compiler.cc:289
>> 289       int source_length = source->length();
>> (gdb) ps source
>> function f(){print("hello");}
>> f();
>>
>> $2 = void
>> (gdb) ps script_name
>> test.js
>>
>>
>>
>> 2010/6/11 Søren Gjesse <sgje...@chromium.org>:
>> > One option is to call one of the ShortPrint, Print or PrintLn methods on
>> > them (Print and PrintLn are only available in debug mode). That will
>> print
>> > their content to stdout. Note that this applies to the internal object
>> > types, e.g the String* in source.val_ not source itself.
>> > Regards,
>> > Søren
>> > On Fri, Jun 11, 2010 at 04:57, Vitali Lovich <vlov...@gmail.com> wrote:
>> >>
>> >> Hey, I'm trying to hack on v8 & I'm trying to figure out how to examine
>> >> the v8 variables.
>> >> For example, I'm trying to figure out some string parameters that are
>> >> passed to compile but they all come up as opaque types & I'm not sure
>> how to
>> >> retrieve the data from them.
>> >> (gdb) p source.val_
>> >> $5 = (v8::String *) 0x8352fb4
>> >> (gdb) p *(source.val_)
>> >> $6 = {<v8::Primitive> = {<v8::Value> = {<v8::Data> = {<No data
>> fields>},
>> >> <No data fields>}, <No data fields>}, <No data fields>}
>> >> Thanks,
>> >> Vitali
>> >>
>> >> --
>> >> v8-users mailing list
>> >> v8-users@googlegroups.com
>> >> http://groups.google.com/group/v8-users
>> >
>> > --
>> > v8-users mailing list
>> > v8-users@googlegroups.com
>> > http://groups.google.com/group/v8-users
>>
>> --
>> v8-users mailing list
>> v8-users@googlegroups.com
>> http://groups.google.com/group/v8-users
>>
>
>  --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
>



-- 
Erik Corry, Software Engineer
Google Denmark ApS.  CVR nr. 28 86 69 84
c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 Copenhagen K,
Denmark.

-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users

Reply via email to