willox / auxtools Goto Github PK
View Code? Open in Web Editor NEWRust library for low-level interfacing with BYOND's virtual machine. Includes a remote debugger for the BYOND DreamMaker language.
License: MIT License
Rust library for low-level interfacing with BYOND's virtual machine. Includes a remote debugger for the BYOND DreamMaker language.
License: MIT License
Ive tried to find a way to redirect it yet it still cant call libauxmos
atm if you attach (not launch) and then disconnected, the server will spam debug output every time it hits the old breakpoints
atm it can result in weird stuff such as populate_procs being called multiple times
It's quite annoying searching for variables currently, having to scroll through potentially hundreds of variables to find the one you're looking for.
It looks like it's currently grouped by inheritance from the type, but that doesn't really help when you're debugging mob/carbon/human
or something and trying to find a mob/
-scope var.
Even then, it's not even alphabetized within the type scope:
I am bad at Rust, and do not feel like fiddling with this enough to implement it properly.
Here are Windows signatures for 515.1602.
call_proc_by_id 55 8B EC 81 EC 98 00 00 00 A1 ?? ?? ?? ?? 33 C5 89 45 FC 8B 55
get_variable 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 0C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 4D
call_datum_proc_by_name 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 18 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 75 14 8D 45 F3 8B 5D 10 6A 01
get_assoc_element 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 10 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 4D
set_assoc_element 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 14 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 4D
to_string_byond 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 3C 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 75
set_variable_byond 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 83 EC 08 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 00 00 00 00 8B 4D
call_proc_by_id
is not a with_scanner_by_call
signature anymore, I couldn't get one to generate, so if someone else wants to make a new one or you can just change what it uses for 1602.
/proc/enable_debugging(mode, port)
CRASH("auxtools not loaded")
/proc/auxtools_stack_trace(msg)
CRASH(msg)
var/early_init/early_init = new
/early_init/New()
init_debugger()
/proc/init_debugger()
var/auxtools_path = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
if(fexists(auxtools_path))
call(auxtools_path, "auxtools_init")()
enable_debugging()
/client/verb/stuff()
..()
var/database/db = new("mydb.db")
var/database/query/q = new("SELECT * FROM my_table WHERE name=?", "test")
if(q.Execute(db) && q.NextRow())
return q.GetRowData()
Put this in a new project, enable BYOND's debugging, place a breakpoint on the line with var/database/query/q
.
Attempting to step through it will result in the process hanging. This is in the output console:
Debug Server: "Pausing execution (reason: Breakpoint)"
Debug Server: "Pausing execution (reason: Step)"
[main] Error responding to "variables": timed out waiting for response
Debug client disconnected
Debug server thread finished
[main] Error responding to "stepIn": timed out waiting for response
[main] Error responding to "continue": timed out waiting for response
We can do it, we have the technology.
Extools had an ability to get forwards and backward references to an object, for debugging hard Dels.
It would be wonderful if auxtools had this same functionality.
Just as title says, any libraries using auxtools can't call procs that they hook into, but only for linux. If you have proc A, and your program hooks into it, then you can't call that proc from your program anymore if you're hosting on linux.
On Windows:
Welcome BYOND! (5.0 Beta Version 515.1616)
auxtools_init: FAILED (FAILED (Couldn't find execute_instruction))
(only checked on windows)
This is a worry for later :)
versions that do succeed:
513.1537
513.1542
514.1586
514.1589
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.