Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes. Set by lizmat on 24 May 2021. |
|||
00:07
epony left
00:09
epony joined
00:35
dogbert11 joined
00:37
dogbert17 left
04:01
coleman is now known as Tcl_Fan420
04:07
Tcl_Fan420 is now known as coleman
|
|||
patrickb | o/ How can I dump more byte code? --target=MAST seems to only print partial information. | 05:41 | |
Also: Is there an MVMObject printer in C land that could be used to inspect those in a gdb session? | 05:43 | ||
A caller frame is the frame one deeper on the call stack - the caller. (frame.h calls this dynamic chain). But what is an outer frame? (aka static chain) | 10:24 | ||
10:37
sena_kun joined
|
|||
patrickb | Thinking about it, I'm pretty sure outer frame must be the lexically enclosing frame. Synonymous to lexical vs dynamic variables. Right? | 12:49 | |
lizmat | yes, that's the definition of outer vs caller | ||
mind you, it can be confusing: I've misunderstood nqp::getlexxcaller for a long time | 12:50 | ||
patrickb | lexcaller seems like a contradiction. What's the explanation? | 13:08 | |
lizmat | basically, it looks through the outer frames of the caller | 13:09 | |
this is used for $/ | |||
patrickb | Ah. A normal lexical search, but in the caller. Makes sense. | 13:10 | |
lizmat | well, actually it does a search in the current frame first | ||
so if the current frame has a $/, it is found there | |||
otherwise it will be found in the outers of the caller (in practice, as every sub/method/mainline has a $/ automatically defined) | 13:11 | ||
patrickb | I just found out about --target=mbc and --dump. So I now know how to access the byte code. Yay! | 13:56 | |
MasterDuke | patrickb: there are some gdb plugins/pretty-printers in the tools directory in the MoarVM repo | 13:57 | |
patrickb | I have already looked at those. No MVMObject printer in there. There is a commented out one, but even if it worked it only prints the REPR type. | 13:58 | |
MasterDuke | hm. you could try pinging timo, i think he did some stuff with them and might have something not-yet-committed | 14:00 | |
patrickb | I find it nearly impossible to keep track of where I am in the program flow when stepping through the interpreter without being able to see what all those objects are. Basically the only thing easily accessible that can give a hint what it's doing specifically is the MVMStrings and `call MVM_dump_backtrace(tc)` | 14:02 | |
MasterDuke | yeah. a common technique is to stick in something unusual (e.g., say nqp::tanh(123)) at places you want to inspect and then break on tanh. that assumes of course you want to stop at a particular place | 14:04 | |
14:04
epony left
|
|||
MasterDuke | i agree that *following* raku scripts in gdb compared to stopping in just one or two places is a pain | 14:05 | |
14:59
timo joined
15:07
epony joined
15:44
epony left
15:59
epony joined
18:22
MasterDuke left
|