Skip to content

Object Functions: Debugging Tools

David Roberts edited this page Jan 15, 2017 · 4 revisions
  • benchmark(expr) — Executes expr in a benchmark harness and returns a string describing its benchmark performance
  • debug(...) — outputs arguments to the console
  • debug_chart(string id, decimal value) — plots a sample in a graph
  • debug_console() — provides an interactive debugging console. Can also be opened with ctrl-d.
  • debug_fn(msg, expr) — evaluates and returns expr. Will print 'msg' to stderr if it's printable, or execute it if it's an executable command.
  • debug_rect(int x, int y, (optional)int w=1, (optional) int h=1) — Draws, for one frame, a rectangle on the level
  • disassemble(function) -> string — Return a human-readable listing of the Anura virtual machine bytecode. Example:
	can_jump: "def() -> bool
		bool(is_standing and (animation not in ['interact', 'fall', 'jump', 'start_jump']) or 
			//after frogatto starts falling off a ledge, give the player a little grace in allowing them to still initiate a jump.
		animation = 'fall' and _cycles_since_last_touching_ground < postjump_grace_period)",

when run through disassemble(level.player.can_jump), yeilds

'   0: OP_CONSTANT 0 ( "@eval (UNSERIALIZABLE_OBJECT N10game_logic12_GLOBAL__N_113bool_functionE)" )
   2: OP_LOOKUP 89
   4: OP_JMP_UNLESS 7 ( -> 12)
   6: OP_POP
   7: OP_LOOKUP 11
   9: OP_CONSTANT 1 ( ["interact","fall","jump","start_jump"] )
   11: OP_NOT_IN
   12: OP_JMP_IF 15 ( -> 28)
   14: OP_POP
   15: OP_LOOKUP 11
   17: OP_CONSTANT 2 ( "fall" )
   19: OP(=)
   20: OP_JMP_UNLESS 7 ( -> 28)
   22: OP_POP
   23: OP_LOOKUP 437
   25: OP_LOOKUP 533
   27: OP(<)
   28: OP_CALL_BUILTIN 1
'
  • dump(x) — Equivalent to debug_fn(x, x). Essentially a no-op code-wise, it prints whatever x is to console and returns x.
  • dump2(x, y) — Equivalent to debug_fn([x, y], y). Like dump(), dump2 is also a no-op for your logic. However, now you can include an identifying string before the stuff to be dumped so you can actually tell which dump function is dumping what data.
  • performance() — returns an object with current performance stats
  • plot_x(int x) — plots a vertical debug line at the given position
  • plot_y(int x) — plots a horizontal debug line at the given position
  • pp(_)Removed in 1.4 in favour of lib.debug.pp. Pretty-print. Returns a human-readable string describing the data structure passed in. Despite the name, does not actually print the string. Lossy, abbreviates long lists/maps, doesn't expand many objects. Does indentation. Was designed to, where debug() shows you the data of a structure, show you the structure of the structure.
  • objects_known_to_gc() -> [objects] — Return a list of all objects. Can be compared to level.chars to detect memory leaks and profile lifetimes.
  • report() — Write a key and a value into [custom] in the stats.
  • instrument(string name, commands ffl) -> int — Has no effect on the ffl passed in, but prints how long it took to run. (Search for "Instrument:" to find the output.)
Clone this wiki locally