EmmyLua-AttachDebugger icon indicating copy to clipboard operation
EmmyLua-AttachDebugger copied to clipboard

Debugging sandboxed Factorio

Open annitya opened this issue 2 years ago • 11 comments

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.

annitya avatar Apr 15 '23 22:04 annitya

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

CppCXY avatar Apr 16 '23 03:04 CppCXY

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

annitya avatar Apr 16 '23 09:04 annitya

emmylua attach debugger, donot need require any thing

CppCXY avatar Apr 16 '23 10:04 CppCXY

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.

annitya avatar Apr 16 '23 12:04 annitya

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

CppCXY avatar Apr 16 '23 13:04 CppCXY

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

CppCXY avatar Apr 16 '23 13:04 CppCXY

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?

annitya avatar Apr 16 '23 14:04 annitya

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.

CppCXY avatar Apr 16 '23 14:04 CppCXY

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.

annitya avatar Apr 16 '23 15:04 annitya

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.

CppCXY avatar Apr 16 '23 15:04 CppCXY

@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?

annitya avatar Apr 16 '23 16:04 annitya