EmmyLua / EmmyLua-AttachDebugger

16 stars 17 forks source link

Debugging sandboxed Factorio #3

Open annitya opened 1 year ago

annitya commented 1 year ago

Is it possible to use the debugger without using the commands on "emmy_core"? It's successfully injected, but I'm unable to require the module due to the sandboxing of Factorio.

If I add _G.emmy.fixPath and sets a breakpoint, the debugger disconnects.

CppCXY commented 1 year ago

The emmylua debugger is divided into emmy_core-based debugging and emmy_hook-based attach debugging, so which one are you talking about

annitya commented 1 year ago

emmy_hook. Thanks for getting in touch so quickly :-)

CppCXY commented 1 year ago

emmylua attach debugger, donot need require any thing

annitya commented 1 year ago

Edit: console-output from emmy-hook

That's what I was hoping for. I might have an actual bug on my hands. Whenever a breakpoint is hit, the process exits abruptly. There is no error message or anything in the game/IntelliJ logs to go by.

Longer explanation:

The breakpoints weren't doing anything which is why I wanted to break declaratively.

I then found a blog-post mentioning fixPath:

image This reminded me of xDebug/PHP in the past, so I adjusted my code accordingly:

image The code above is transpiled, so don't worry about it too much :)

I set the breakpoint within a conditional on purpose.

If I wear the armor and then move, the breakpoint is hit and the process ends.

sidenote:

The Lua-environment of Factorio might not be the friendliest. "require" has been modified, io and couroutines don't exist and there might be multiple lua-instances spawning/dying running at any time. I'm still new to both Lua and Factorio-modding, so forgive me if I got anything wrong.

CppCXY commented 1 year ago

please update emmy_hook from https://github.com/EmmyLua/EmmyLuaDebugger/releases

CppCXY commented 1 year ago

or use my project https://github.com/CppCXY/EmmyLua-AttachDebugger

annitya commented 1 year ago

I downloaded latest release from your repository and replaced the plugin-files manually. It works as expected now. Thank you so much! :)

I do fear that downloading files manually and discovering fixPath will be a bit much for most users. Perhaps it could be released as a regular plugin alongside some documentation?

CppCXY commented 1 year ago

the reason for the manual update is that this plugin has not been updated for a long time. in the link above I maintained the latest version myself. the plugin could not be released because it was originally part of Emmylua. but it had to be separated from emmylua because of the reported virus.

annitya commented 1 year ago

Thank you so much for your work :) Don't they accept PRs?

I have a rather unusal setup. I'm transpiling from TypeScript. Is there any way to get sourcemaps working? I tried altering fixPath so that it returned a corresponding ts-file, but breakpoints stopped working.

CppCXY commented 1 year ago

I am the maintainer. It's just that the author may have forgotten to give me permission to this repository, and there are no functions related to source maps.

annitya commented 1 year ago

@tangzx: Could you perhaps give the necessary permissions to @CppCXY? :)

I suspect the code handling breakpoints are a bit too strict. There are a lot of builtin support for sourcemaps in IntelliJ, would you consider making the setting of breakpoints a bit more lenient?