AddDebugHook: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 6: | Line 6: | ||
Debug hooks are not recursive, so functions and events triggered inside the hook callback will not be traced. | Debug hooks are not recursive, so functions and events triggered inside the hook callback will not be traced. | ||
}} | }} | ||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
Line 17: | Line 18: | ||
** preFunction | ** preFunction | ||
** postFunction | ** postFunction | ||
{{New feature/item|9.0160|1.6|11856| | |||
* preEventFunction | |||
* postEventFunction | |||
}} | |||
*'''callbackFunction :''' The function to call | *'''callbackFunction :''' The function to call | ||
{{New feature/item|9. | {{New feature/item|9.0152|1.5.2|7967| | ||
* Returning the string "skip" from the callback function will cause the original function/event to be skipped | * Returning the string "skip" from the callback function will cause the original function/event to be skipped | ||
}} | }} | ||
Line 24: | Line 29: | ||
===Optional Arguments=== | ===Optional Arguments=== | ||
*'''nameList:''' Table of strings for restricting which functions and events the hook will be triggered on | *'''nameList:''' Table of strings for restricting which functions and events the hook will be triggered on | ||
{{New feature/item|9. | {{New feature/item|9.0152|1.5.2|7967| | ||
* addDebugHook and removeDebugHook will only be hooked if they are specified in the name list | * addDebugHook and removeDebugHook will only be hooked if they are specified in the name list | ||
}} | }} | ||
Line 33: | Line 38: | ||
==Callback parameters== | ==Callback parameters== | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
string preFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, functionArguments ) | string preFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, ...functionArguments ) | ||
postFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, functionArguments ) | postFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, ...functionArguments ) | ||
string preEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, eventArguments ) | string preEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, ...eventArguments ) | ||
postEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, eventArguments ) | postEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, ...eventArguments ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{New feature/item|3.0160|1.6|11856| | |||
<syntaxhighlight lang="lua"> | |||
string preEventFunction ( resource eventResource, string eventName, element eventSource, element eventClient, string eventFilename, int eventLineNumber, resource functionResource, string functionFilename, int functionLineNumber, ...eventArgs ) | |||
postEventFunction ( resource eventResource, string eventName, element eventSource, element eventClient, string eventFilename, int eventLineNumber, resource functionResource, string functionFilename, int functionLineNumber, ...eventArgs ) | |||
</syntaxhighlight> | |||
}} | |||
==Example== | ==Example== | ||
Line 84: | Line 95: | ||
{{New feature/item|9. | {{New feature/item|9.0152|1.5.2|7967| | ||
This example shows how to disable addDebugHook | This example shows how to disable addDebugHook | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
Line 98: | Line 109: | ||
{{ChangelogItem|1.3.5-9.06142|Added option to restrict to specified functions and events }} | {{ChangelogItem|1.3.5-9.06142|Added option to restrict to specified functions and events }} | ||
{{ChangelogItem|1.5.2-9.07957|Added option to skip original function/event <br/>Added ability to hook addDebugHook and removeDebugHook }} | {{ChangelogItem|1.5.2-9.07957|Added option to skip original function/event <br/>Added ability to hook addDebugHook and removeDebugHook }} | ||
{{ChangelogItem|1.5.5-9.11856|Added pre/postEventFunction hooks }} | |||
==Requirements== | ==Requirements== | ||
{{Requirements|1.3.4-9.05939|1.3.5-9.06054}} | {{Requirements|1.3.4-9.05939|1.3.5-9.06054}} |
Revision as of 09:44, 19 February 2018
This function allows tracing of MTA functions and events. It should only be used when debugging scripts as it may degrade script performance.
Debug hooks are not recursive, so functions and events triggered inside the hook callback will not be traced.
Syntax
bool addDebugHook( string hookType, function callbackFunction[, table nameList ] )
Required Arguments
- hookType: The type of hook to add. This can be:
- preEvent
- postEvent
- preFunction
- postFunction
- callbackFunction : The function to call
Optional Arguments
- nameList: Table of strings for restricting which functions and events the hook will be triggered on
Returns
Returns true if the hook was successfully added, or false otherwise.
Callback parameters
string preFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, ...functionArguments ) postFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, ...functionArguments ) string preEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, ...eventArguments ) postEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, ...eventArguments )
string preEventFunction ( resource eventResource, string eventName, element eventSource, element eventClient, string eventFilename, int eventLineNumber, resource functionResource, string functionFilename, int functionLineNumber, ...eventArgs ) postEventFunction ( resource eventResource, string eventName, element eventSource, element eventClient, string eventFilename, int eventLineNumber, resource functionResource, string functionFilename, int functionLineNumber, ...eventArgs )
Example
This example will dump info about all triggered events:
function onPreEvent( sourceResource, eventName, eventSource, eventClient, luaFilename, luaLineNumber, ... ) local args = { ... } local srctype = eventSource and getElementType(eventSource) local resname = sourceResource and getResourceName(sourceResource) local plrname = eventClient and getPlayerName(eventClient) outputDebugString( "preEvent" .. " " .. tostring(resname) .. " " .. tostring(eventName) .. " source:" .. tostring(srctype) .. " player:" .. tostring(plrname) .. " file:" .. tostring(luaFilename) .. "(" .. tostring(luaLineNumber) .. ")" .. " numArgs:" .. tostring(#args) .. " arg1:" .. tostring(args[1]) ) end addDebugHook( "preEvent", onPreEvent )
This example will dump info about all called MTA functions:
function onPreFunction( sourceResource, functionName, isAllowedByACL, luaFilename, luaLineNumber, ... ) local args = { ... } local resname = sourceResource and getResourceName(sourceResource) outputDebugString( "preFunction" .. " " .. tostring(resname) .. " " .. tostring(functionName) .. " allowed:" .. tostring(isAllowedByACL) .. " file:" .. tostring(luaFilename) .. "(" .. tostring(luaLineNumber) .. ")" .. " numArgs:" .. tostring(#args) .. " arg1:" .. tostring(args[1]) ) end addDebugHook( "preFunction", onPreFunction)
This example adds a hook which will only be triggered for the named functions
addDebugHook( "preFunction", onPreFunction, {"setElementPosition","loadstring"} )
Changelog
Version | Description |
---|
1.3.5-9.06054 | Added clientside |
1.3.5-9.06142 | Added option to restrict to specified functions and events |
1.5.2-9.07957 | Added option to skip original function/event Added ability to hook addDebugHook and removeDebugHook |
1.5.5-9.11856 | Added pre/postEventFunction hooks |
Requirements
This template will be deleted.
See Also
- addDebugHook
- base64Decode
- base64Encode
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace