• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

HTML5 Obfuscation Still Happening in Debug Mode? Can't Debug Crash.

Hey all-

We have a project for which our HTML5 build is getting a black screen crash which doesn't happen in the Windows build. We're trying to debug it by running in Debug mode (F6/the little bug icon), reproducing, and checking the console. However, the crash message is obfuscated despite us being in debug mode. We can see the output of show_debug_message() in the logs via the debug popup, but the actual error itself looks like

GML:
Unhandled Exception - Uncaught TypeError: Cannot read property '_Vb1' of null in file undefined at line undefined
Clicking through to the "source" tab shows obfuscated code:

Code:
for (var _Sb3 = 0; _Sb3 < _Dj._Vb1._UQ.length; ++_Sb3) {
  var _Tb3 = _Dj._Vb1._UQ[_Sb3];
  if (_Tb3 !== null && _Tb3 !== undefined && _Tb3._Sc1 == _MS.id) {
    _Rb3 = _Tb3._ZN;
    break
  }
}
So it looks like we're accessing an undefined variable on an instance, trying to get length. We've tried combing through our code to find where this could be happening but haven't had any luck. If we could disable the obfuscation this would be a super easy fix. But without the obfuscation this has cost us many fruitless hours.

The documentation about debugging HTML5 says that running in debug mode should show unobfuscated source code. Is this documentation incorrect? Or are we missing a setting or something else that might cause this behavior? Any insight is appreciated.

Runtime version 2.3.1.409
 
Last edited:

chamaeleon

Member
The Javascript generated from the code you write should be unobfuscated. The GMS HTML5 runtime code (all various GMS GML functions you may call, the entire event loop, and so on) should remain obfuscated. Your code should be included as comments (and therefore searchable by simply picking names you know you used for your own definitions of variables and functions, etc.), directly followed by the Javascript code generated from it.
 
Top