summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-09-13 20:00:48 +0800
committerruki <[email protected]>2020-09-13 20:15:44 +0800
commit00d7bfe8f128568671e83a41540a270b81a28c33 (patch)
treee882fa79beeb83fe29d689a639e04f1cdf23626f
parent87c2d2126c8767566b24c419a3352ecf87a17098 (diff)
detach debugger
-rw-r--r--xmake/actions/run/main.lua2
-rw-r--r--xmake/modules/devel/debugger/run.lua62
2 files changed, 23 insertions, 41 deletions
diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua
index d299b397c..26bc9c2aa 100644
--- a/xmake/actions/run/main.lua
+++ b/xmake/actions/run/main.lua
@@ -57,7 +57,7 @@ function _do_run_target(target)
-- debugging?
if option.get("debug") then
- debugger.run(targetfile, option.get("arguments"))
+ debugger.run(targetfile, option.get("arguments"), {detach = true})
else
os.execv(targetfile, option.get("arguments"))
end
diff --git a/xmake/modules/devel/debugger/run.lua b/xmake/modules/devel/debugger/run.lua
index e5b449679..ad2e4448b 100644
--- a/xmake/modules/devel/debugger/run.lua
+++ b/xmake/modules/devel/debugger/run.lua
@@ -32,7 +32,7 @@ import("detect.tools.find_devenv")
import("detect.tools.find_vsjitdebugger")
-- run gdb
-function _run_gdb(program, argv)
+function _run_gdb(program, argv, opt)
-- find gdb
local gdb = find_gdb({program = config.get("debugger")})
@@ -46,14 +46,12 @@ function _run_gdb(program, argv)
table.insert(argv, 1, "--args")
-- run it
- os.execv(gdb, argv)
-
- -- ok
+ os.execv(gdb, argv, opt)
return true
end
-- run cuda-gdb
-function _run_cudagdb(program, argv)
+function _run_cudagdb(program, argv, opt)
-- find cudagdb
local gdb = find_cudagdb({program = config.get("debugger")})
@@ -67,14 +65,12 @@ function _run_cudagdb(program, argv)
table.insert(argv, 1, "--args")
-- run it
- os.execv(gdb, argv)
-
- -- ok
+ os.execv(gdb, argv, opt)
return true
end
-- run lldb
-function _run_lldb(program, argv)
+function _run_lldb(program, argv, opt)
-- find lldb
local lldb = find_lldb({program = config.get("debugger")})
@@ -95,14 +91,12 @@ function _run_lldb(program, argv)
end
-- run it
- os.execv(names[1], argv)
-
- -- ok
+ os.execv(names[1], argv, opt)
return true
end
-- run windbg
-function _run_windbg(program, argv)
+function _run_windbg(program, argv, opt)
-- find windbg
local windbg = find_windbg({program = config.get("debugger")})
@@ -115,14 +109,12 @@ function _run_windbg(program, argv)
table.insert(argv, 1, program)
-- run it
- os.execv(windbg, argv)
-
- -- ok
+ os.execv(windbg, argv, opt)
return true
end
-- run cuda-memcheck
-function _run_cudamemcheck(program, argv)
+function _run_cudamemcheck(program, argv, opt)
-- find cudamemcheck
local cudamemcheck = find_cudamemcheck({program = config.get("debugger")})
@@ -135,14 +127,12 @@ function _run_cudamemcheck(program, argv)
table.insert(argv, 1, program)
-- run it
- os.execv(cudamemcheck, argv)
-
- -- ok
+ os.execv(cudamemcheck, argv, opt)
return true
end
-- run x64dbg
-function _run_x64dbg(program, argv)
+function _run_x64dbg(program, argv, opt)
-- find x64dbg
local x64dbg = find_x64dbg({program = config.get("debugger")})
@@ -155,14 +145,12 @@ function _run_x64dbg(program, argv)
table.insert(argv, 1, program)
-- run it
- os.execv(x64dbg, argv)
-
- -- ok
+ os.execv(x64dbg, argv, opt)
return true
end
-- run ollydbg
-function _run_ollydbg(program, argv)
+function _run_ollydbg(program, argv, opt)
-- find ollydbg
local ollydbg = find_ollydbg({program = config.get("debugger")})
@@ -175,14 +163,12 @@ function _run_ollydbg(program, argv)
table.insert(argv, 1, program)
-- run it
- os.execv(ollydbg, argv)
-
- -- ok
+ os.execv(ollydbg, argv, opt)
return true
end
-- run vsjitdebugger
-function _run_vsjitdebugger(program, argv)
+function _run_vsjitdebugger(program, argv, opt)
-- find vsjitdebugger
local vsjitdebugger = find_vsjitdebugger({program = config.get("debugger")})
@@ -195,14 +181,12 @@ function _run_vsjitdebugger(program, argv)
table.insert(argv, 1, program)
-- run it
- os.execv(vsjitdebugger, argv)
-
- -- ok
+ os.execv(vsjitdebugger, argv, opt)
return true
end
-- run devenv
-function _run_devenv(program, argv)
+function _run_devenv(program, argv, opt)
-- find devenv
local devenv = find_devenv({program = config.get("debugger")})
@@ -216,9 +200,7 @@ function _run_devenv(program, argv)
table.insert(argv, 2, program)
-- run it
- os.execv(devenv, argv)
-
- -- ok
+ os.execv(devenv, argv, opt)
return true
end
@@ -236,7 +218,7 @@ end
--
-- @endcode
--
-function main(program, argv)
+function main(program, argv, opt)
-- init debuggers
local debuggers =
@@ -265,7 +247,7 @@ function main(program, argv)
local debuggername = path.basename(debugger)
for _, _debugger in ipairs(debuggers) do
if debuggername:startswith(_debugger[1]) then
- if _debugger[2](program, argv) then
+ if _debugger[2](program, argv, opt) then
return
end
end
@@ -273,7 +255,7 @@ function main(program, argv)
for _, _debugger in ipairs(debuggers) do
if debugger:find(_debugger[1]) then
- if _debugger[2](program, argv) then
+ if _debugger[2](program, argv, opt) then
return
end
end
@@ -281,7 +263,7 @@ function main(program, argv)
else
-- run debugger
for _, _debugger in ipairs(debuggers) do
- if _debugger[2](program, argv) then
+ if _debugger[2](program, argv, opt) then
return
end
end