Rand Stats

App::MoarVM::Debug

zef:raku-community-modules

Actions Status Actions Status Actions Status

App::MoarVM::Debug

The interactive MoarVM debugger installs a script called raku-remote-debug that allows a developer to start a Raku program in debugger mode, while in another window allows the developer to step through the program and perform various types of introspection.

Starting in debugger mode

$ raku-remote-debug your-program.raku arg1 arg2

Starting a program in debugger mode is as simple as replacing raku by raku-remote-debug on the command line. That's it.

When it is started this way, it will show a text on STDERR such as:

Running with debugging enabled at localhost port 27434

Your program will not actually execute until you have entered the resume command in the debugger.

Starting the debugger

$ raku-remote-debug

To start the debugger, call raku-remote-debug without any arguments. It will show you a text such as:

Welcome to the MoarVM Remote Debugger

Connecting to MoarVM remote on localhost port 27434
success!
>

You would typically then set breakpoints or do some introspection. And then start the program by typing "resume" to lift the suspension of all threads in the program.

Type "help" in the debugger's CLI to see what commands are available to you.

Limitations

The debugger uses a single port to communicate between your program and the debugger. By default this is port 27434.

This means that on any given computer, only one program can be debugged this way, and only one debugger can run at the same time.

Should you need to have more debuggers running at the same time, or for some reason you need to use another port, you can set the environment variable MVM_DEBUG_PORT to the port you'd like to use.

To start your program:

$ MVM_DEBUG_PORT=4242 raku-remote-debug your-program.raku arg1 arg2

To start the debugger:

$ MVM_DEBUG_PORT=4242 raku-remote-debug

Some hints

The string is the filename and 1234 is the line number (1 1 is the secret ingredient). Ensure the line number doesn't point to an empty line.

If the features includes attributes, you can enter attributes 1234 for this object to get information about the object's attributes.

If the features includes positional, you can enter positionals 1234 to get information about the positional elements of the object.

If the features includes associative, you can enter associatives 1234 to get information about the associative elements (keys and values) of the object.

The metadata command is only needed if you don't know which of these commands is useful for any given type.

Known Issues

The only stepping mode currently available is Step Into.

Backtraces will show incorrect line numbers.

AUTHOR

Source can be located at: https://github.com/raku-community-modules/App-MoarVM-Debug . Comments and Pull Requests are welcome.

COPYRIGHT AND LICENSE

Copyright 2017 - 2020 Edument AB

Copyright 2024 The Raku Community

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.