edbrowse-dev - development list for edbrowse
 help / color / mirror / Atom feed
* [edbrowse-dev] 'this' in a breakpoint
@ 2019-06-05  5:20 Kevin Carhart
  2019-06-05  5:49 ` [edbrowse-dev] " Kevin Carhart
  2019-06-05  7:07 ` [edbrowse-dev] " Karl Dahlke
  0 siblings, 2 replies; 3+ messages in thread
From: Kevin Carhart @ 2019-06-05  5:20 UTC (permalink / raw)
  To: edbrowse-dev


I think 'this' is always returning window within a breakpoint.  So if you 
have to echo let's say, a, where a = (this, b), I think you would get a 
result that didn't reflect the real run.

To recreate, try it with jsrt

I went to the Circle function and added an alert that produces the 
following:

when jsrt is run with no breakpoints, what is 'this' in function Circle? 
[object Object]

And I assigned window.preserve_this = this
Then I echoed preserve_this from jdb:
jdb
preserve_this
[object Object]
ok(preserve_this)
r,c,a,q


Now I restored Circle, so jsrt is back to factory settings.
Now I put a breakpoint in Circle and echoed 'this' at the breakpoint 
prompt.

b base
24269
bp: this
[object global]

Do you think my experiment is sound and can this be alleviated?

thanks
Kevin

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [edbrowse-dev] Re: 'this' in a breakpoint
  2019-06-05  5:20 [edbrowse-dev] 'this' in a breakpoint Kevin Carhart
@ 2019-06-05  5:49 ` Kevin Carhart
  2019-06-05  7:07 ` [edbrowse-dev] " Karl Dahlke
  1 sibling, 0 replies; 3+ messages in thread
From: Kevin Carhart @ 2019-06-05  5:49 UTC (permalink / raw)
  To: edbrowse-dev


I hope it made sense from context but I goofed here

> have to echo let's say, a, where a = (this, b), I think you would get a

I meant to say...  if a = some_function(this,b).  And you're trying to 
diagnose why a gets undefined and the code crashes trying to use a, for 
instance.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [edbrowse-dev] 'this' in a breakpoint
  2019-06-05  5:20 [edbrowse-dev] 'this' in a breakpoint Kevin Carhart
  2019-06-05  5:49 ` [edbrowse-dev] " Kevin Carhart
@ 2019-06-05  7:07 ` Karl Dahlke
  1 sibling, 0 replies; 3+ messages in thread
From: Karl Dahlke @ 2019-06-05  7:07 UTC (permalink / raw)
  To: edbrowse-dev

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

Even if you could pass this to the eval function, and there are ways to do it, like eval.call(this,$bp), native eval seems to have no respect for this.
It doesn't inject this into the compilation of the string.
I fed this to the duktape shell and to the mozilla js shell.
You would expect to get 3 and 3, but we get 3 and then undefined.

t = {x:3, eval:eval, a:function(){print(this.x)}}; t.a(); t.eval("this.x");

Unless there is some other clever workaround, you'd have to say window.z=this,eval($bp)
and refer to z as needed, assuming z was not already a local variable, and remembering to delete z when done (cleaning up),
or var z = this; eval($bp); if the point of injection allows that syntax.
This is getting kinda awkward but it's all I have.

Karl Dahlke

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-06-05  7:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-05  5:20 [edbrowse-dev] 'this' in a breakpoint Kevin Carhart
2019-06-05  5:49 ` [edbrowse-dev] " Kevin Carhart
2019-06-05  7:07 ` [edbrowse-dev] " Karl Dahlke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).