Jump to content

MCGUFIN

  • entries
    15
  • comments
    0
  • views
    2109

Native Watch


Monoman1

69 views

This is a super useful diagnostic feature. This allows you to watch native function (must be a native function) calls to debug problems that would otherwise be very opaque and difficult to untangle. 
 

Json Structure:
{
    "enabled": true,
    "watch": [
        { "objectType": "_MGF_Util", "functionName": "IsAnyMenuOpen" },
        { "objectType": "Game", "functionName": "DisablePlayerControls" },
    { "objectType": "Game", "functionName": "EnablePlayerControls" }
    ]
}
 

"enabled": Must be set to true for MGF to monitor function calls at all. 

 

"watch": Each item in 'watch' will get logged to _MGF_Util.log any time they are called. The beauty is that the system will tell you exactly which script initiated the call, which function within that script and even the parameters it was called with. Simply modify MgfNativeWatch.json - add the script and function you want to watch. Set 'enabled' = true. Start the game and open (or even better 'tail') _MGF_Util.log to monitor activity. Search 'MgfNativeWatch' to isolate details (the log is used for many other things). Modifications to the json will not take effect while the game is running. 

Example: 
I was having some trouble nailing down player control problems. This is the kind of problem you could spend hours doing the old debugging loop: Disable mods, try to reproduce issue, etc. Enter MgfNativeWatch and immediately you can see two mods fighting for controls: 

Log: 

Spoiler
Line   2: [02:43:19.515] [28120] [I] [MgfNativeWatch] Loaded 3 watched natives from config:
Line   3: [02:43:19.515] [28120] [I] [MgfNativeWatch]   _MGF_Util.IsAnyMenuOpen
Line   4: [02:43:19.515] [28120] [I] [MgfNativeWatch]   Game.DisablePlayerControls
Line   5: [02:43:19.515] [28120] [I] [MgfNativeWatch]   Game.EnablePlayerControls
Line 399: [02:44:50.099] [28120] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=true, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by ssrdxconfigmenu.DisableZoom (call #1)
Line 400: [02:44:54.415] [32752] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by ssrdxconfigmenu.OnKeyUp (call #1)
Line 401: [02:44:54.697] [37204] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=true, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by ssrdxconfigmenu.OnUpdate (call #2)
Line 402: [02:44:55.264] [32752] [I] [MgfNativeWatch] _MGF_Util.IsAnyMenuOpen() called by _mgf_uikey.OnKeyDown (call #1)
Line 403: [02:45:00.923] [24560] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by ssrdxconfigmenu.DisableZoom (call #2)
Line 404: [02:45:05.347] [35624] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #3)
Line 405: [02:45:05.354] [24560] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #3)
Line 406: [02:45:13.827] [37204] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #4)
Line 407: [02:45:13.836] [37204] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #4)
Line 408: [02:45:22.310] [37780] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #5)
Line 409: [02:45:22.318] [35624] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #5)
Line 410: [02:45:30.788] [24560] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #6)
Line 411: [02:45:30.796] [37780] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #6)
Line 412: [02:45:32.795] [37204] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by ssrdxconfigmenu.DisableZoom (call #7)
Line 413: [02:45:39.298] [35624] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #7)
Line 414: [02:45:39.306] [24560] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #8)
Line 415: [02:45:47.777] [32752] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #8)
Line 416: [02:45:47.784] [24560] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #9)
Line 417: [02:45:50.185] [35624] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by ssrdxconfigmenu.DisableZoom (call #10)
Line 418: [02:45:56.325] [35624] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #9)
Line 419: [02:45:56.334] [32752] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #11)
Line 421: [02:46:04.802] [32752] [I] [MgfNativeWatch] Game.DisablePlayerControls(param1=false, param2=false, param3=false, param4=false, param5=false, param6=false, param7=false, param8=false, param9=0) called by zadlibs.UpdateControls (call #10)
Line 422: [02:46:04.811] [35624] [I] [MgfNativeWatch] Game.EnablePlayerControls(param1=true, param2=true, param3=true, param4=true, param5=true, param6=true, param7=true, param8=true, param9=0) called by zadlibs.UpdateControls (call #12)

 

 

Edited by Monoman1

0 Comments


Recommended Comments

There are no comments to display.

×
×
  • Create New...