mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
New way of loading the debugger.
This commit is contained in:
parent
f65238efe6
commit
7ff06b5ef8
56
Moose Development/Debugger/connect.lua
Normal file
56
Moose Development/Debugger/connect.lua
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
-- If you want to use the debugger, move these 3 lines into MissionScripting.lua of DCS world.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- MissionScripting.lua modifications
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- --Initialization script for the Mission lua Environment (SSE)
|
||||||
|
--
|
||||||
|
-- dofile('Scripts/ScriptingSystem.lua')
|
||||||
|
--
|
||||||
|
-- package.path = package.path..";.\\LuaSocket\\?.lua;"
|
||||||
|
-- local initconnection = require("debugger")
|
||||||
|
-- initconnection( "127.0.0.1", 10000, "dcsserver", nil, "win", "" )
|
||||||
|
--
|
||||||
|
-- --Sanitize Mission Scripting environment
|
||||||
|
-- --This makes unavailable some unsecure functions.
|
||||||
|
-- --Mission downloaded from server to client may contain potentialy harmful lua code that may use these functions.
|
||||||
|
-- --You can remove the code below and make availble these functions at your own risk.
|
||||||
|
--
|
||||||
|
-- local function sanitizeModule(name)
|
||||||
|
-- _G[name] = nil
|
||||||
|
-- package.loaded[name] = nil
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- do
|
||||||
|
-- sanitizeModule('os')
|
||||||
|
-- sanitizeModule('io')
|
||||||
|
-- sanitizeModule('lfs')
|
||||||
|
-- require = nil
|
||||||
|
-- loadlib = nil
|
||||||
|
-- end
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- So for clarity, these are the three lines of code that matter!
|
||||||
|
|
||||||
|
-- Add LuaSocket to the LUAPATH, so that it can be found.
|
||||||
|
package.path = package.path..";.\\LuaSocket\\?.lua;"
|
||||||
|
|
||||||
|
-- Connect to the debugger, first require it.
|
||||||
|
local initconnection = require("debugger")
|
||||||
|
|
||||||
|
-- Now make the connection..
|
||||||
|
-- "127.0.0.1" is the localhost.
|
||||||
|
-- 10000 is the port. If you wanna use another port in LDT, change this number too!
|
||||||
|
-- "dcsserver" is the name of the server. If you wanna use another name, change the name here too!
|
||||||
|
-- nil (is for transport protocol, but not using this)
|
||||||
|
-- "win" don't touch. But is important to indicate that we are in a windows environment to the debugger script.
|
||||||
|
initconnection( "127.0.0.1", 10000, "dcsserver", nil, "win" )
|
||||||
|
|
||||||
@ -724,7 +724,6 @@ end
|
|||||||
--TODO dynamic code handling
|
--TODO dynamic code handling
|
||||||
-- The DBGp specification is not clear about the line number meaning, this implementation is 1-based and numbers are inclusive
|
-- The DBGp specification is not clear about the line number meaning, this implementation is 1-based and numbers are inclusive
|
||||||
function M.source(self, args)
|
function M.source(self, args)
|
||||||
BASE:E( { self = self, args = args } )
|
|
||||||
local path
|
local path
|
||||||
if args.f then
|
if args.f then
|
||||||
path = platform.get_path(args.f)
|
path = platform.get_path(args.f)
|
||||||
@ -733,16 +732,13 @@ function M.source(self, args)
|
|||||||
assert(path:sub(1,1) == "@")
|
assert(path:sub(1,1) == "@")
|
||||||
path = path:sub(2)
|
path = path:sub(2)
|
||||||
end
|
end
|
||||||
BASE:E( { path = path } )
|
|
||||||
local file, err = io.open(path)
|
local file, err = io.open(path)
|
||||||
if not file then
|
if not file then
|
||||||
BASE:E( { "Not found" } )
|
|
||||||
dbgp.error(100, err, { success = 0 })
|
dbgp.error(100, err, { success = 0 })
|
||||||
end
|
end
|
||||||
BASE:E( { "Found" } )
|
-- Commented out by FlightControl. Not working in DCS.
|
||||||
-- Try to identify compiled files
|
-- Try to identify compiled files
|
||||||
--if file:read(1) == "\033" then dbgp.error(100, args.f.." is bytecode", { success = 0 }) end
|
--if file:read(1) == "\033" then dbgp.error(100, args.f.." is bytecode", { success = 0 }) end
|
||||||
BASE:E( { file = file } )
|
|
||||||
--file:seek("set", 0)
|
--file:seek("set", 0)
|
||||||
|
|
||||||
|
|
||||||
@ -2178,9 +2174,7 @@ function M.init(executionplatform,workingdirectory)
|
|||||||
-- define current platform
|
-- define current platform
|
||||||
--------------------------
|
--------------------------
|
||||||
-- check parameter
|
-- check parameter
|
||||||
|
|
||||||
BASE:E({executionplatform=executionplatform, workingdirectory=workingdirectory})
|
|
||||||
|
|
||||||
if executionplatform and executionplatform ~= "unix" and executionplatform ~="win" then
|
if executionplatform and executionplatform ~= "unix" and executionplatform ~="win" then
|
||||||
error("Unable to initialize platform module : execution platform should be 'unix' or 'win'.")
|
error("Unable to initialize platform module : execution platform should be 'unix' or 'win'.")
|
||||||
end
|
end
|
||||||
@ -2248,7 +2242,6 @@ function M.init(executionplatform,workingdirectory)
|
|||||||
if p then
|
if p then
|
||||||
local res = p:read("*l")
|
local res = p:read("*l")
|
||||||
p:close()
|
p:close()
|
||||||
BASE:E( { res = res } )
|
|
||||||
return M.normalize(res)
|
return M.normalize(res)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -2787,6 +2780,8 @@ end
|
|||||||
|
|
||||||
local debug = require "debug"
|
local debug = require "debug"
|
||||||
|
|
||||||
|
local io = io
|
||||||
|
|
||||||
-- To avoid cyclic dependency, internal state of the debugger that must be accessed
|
-- To avoid cyclic dependency, internal state of the debugger that must be accessed
|
||||||
-- elsewhere (in commands most likely) will be stored in a fake module "debugger.core"
|
-- elsewhere (in commands most likely) will be stored in a fake module "debugger.core"
|
||||||
local core = { }
|
local core = { }
|
||||||
@ -3089,7 +3084,6 @@ end
|
|||||||
local function debugger_loop(self, async_packet)
|
local function debugger_loop(self, async_packet)
|
||||||
self.skt:settimeout(nil) -- set socket blocking
|
self.skt:settimeout(nil) -- set socket blocking
|
||||||
|
|
||||||
BASE:E( "in debugger loop" )
|
|
||||||
-- in async mode, the debugger does not wait for another command before continuing and does not modify previous_context
|
-- in async mode, the debugger does not wait for another command before continuing and does not modify previous_context
|
||||||
local async_mode = async_packet ~= nil
|
local async_mode = async_packet ~= nil
|
||||||
|
|
||||||
@ -3117,9 +3111,7 @@ local function debugger_loop(self, async_packet)
|
|||||||
-- invoke function
|
-- invoke function
|
||||||
local func = commands[cmd]
|
local func = commands[cmd]
|
||||||
if func then
|
if func then
|
||||||
BASE:E( "before call" )
|
|
||||||
local ok, cont = xpcall(function() return func(self, args, data) end, debug.traceback)
|
local ok, cont = xpcall(function() return func(self, args, data) end, debug.traceback)
|
||||||
BASE:E( { "after call", ok } )
|
|
||||||
if not ok then -- internal exception
|
if not ok then -- internal exception
|
||||||
local code, msg, attr
|
local code, msg, attr
|
||||||
if type(cont) == "table" and getmetatable(cont) == dbgp.DBGP_ERR_METATABLE then
|
if type(cont) == "table" and getmetatable(cont) == dbgp.DBGP_ERR_METATABLE then
|
||||||
|
|||||||
@ -11,9 +11,3 @@ _DATABASE = DATABASE:New() -- Core.Database#DATABASE
|
|||||||
|
|
||||||
_SETTINGS = SETTINGS:Set()
|
_SETTINGS = SETTINGS:Set()
|
||||||
|
|
||||||
package.path = package.path..";.\\LuaSocket\\?.lua;"
|
|
||||||
|
|
||||||
local initconnection = require("debugger")
|
|
||||||
initconnection( "127.0.0.1", 10000, "dcsserver", nil, "win", "" )
|
|
||||||
|
|
||||||
print("Debugger is configured!")
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user