summaryrefslogtreecommitdiff
path: root/xmake/modules/devel/debugger/run.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2025-02-02 22:57:19 +0800
committerruki <[email protected]>2025-02-02 22:57:19 +0800
commitc6cf8f109644f2dfb65e9dedd5629cd4a564db02 (patch)
tree281b7e8e82059304ab1c64f01c2e89a6e87a5b7c /xmake/modules/devel/debugger/run.lua
parente0b9b189f0c7e8b1438ecfe923d5b6d5a42ef5f2 (diff)
improve debugger/run
Diffstat (limited to 'xmake/modules/devel/debugger/run.lua')
-rw-r--r--xmake/modules/devel/debugger/run.lua82
1 files changed, 22 insertions, 60 deletions
diff --git a/xmake/modules/devel/debugger/run.lua b/xmake/modules/devel/debugger/run.lua
index 29c3f8c45..72e06a2e7 100644
--- a/xmake/modules/devel/debugger/run.lua
+++ b/xmake/modules/devel/debugger/run.lua
@@ -22,25 +22,14 @@
import("core.base.json")
import("core.base.option")
import("core.project.config")
-import("detect.tools.find_cudagdb")
-import("detect.tools.find_cudamemcheck")
-import("detect.tools.find_gdb")
-import("detect.tools.find_lldb")
-import("detect.tools.find_windbg")
-import("detect.tools.find_x64dbg")
-import("detect.tools.find_ollydbg")
-import("detect.tools.find_devenv")
-import("detect.tools.find_vsjitdebugger")
-import("detect.tools.find_renderdoc")
import("lib.detect.find_tool")
+import("private.utils.executable_path")
import("private.action.run.runenvs")
-- run gdb
function _run_gdb(program, argv, opt)
-
- -- find gdb
opt = opt or {}
- local gdb = find_gdb({program = config.get("debugger")})
+ local gdb = find_tool("gdb", {program = config.get("debugger")})
if not gdb then
return false
end
@@ -51,16 +40,14 @@ function _run_gdb(program, argv, opt)
table.insert(argv, 1, "--args")
-- run it
- os.execv(gdb, argv, table.join(opt, {exclusive = true}))
+ os.execv(gdb.program, argv, table.join(opt, {exclusive = true}))
return true
end
-- run cuda-gdb
function _run_cudagdb(program, argv, opt)
-
- -- find cudagdb
opt = opt or {}
- local gdb = find_cudagdb({program = config.get("debugger")})
+ local gdb = find_tool("cudagdb", {program = config.get("debugger")})
if not gdb then
return false
end
@@ -71,42 +58,32 @@ function _run_cudagdb(program, argv, opt)
table.insert(argv, 1, "--args")
-- run it
- os.execv(gdb, argv, table.join(opt, {exclusive = true}))
+ os.execv(gdb.program, argv, table.join(opt, {exclusive = true}))
return true
end
-- run lldb
function _run_lldb(program, argv, opt)
-
- -- find lldb
opt = opt or {}
- local lldb = find_lldb({program = config.get("debugger")})
+ local lldb = find_tool("lldb", {program = config.get("debugger")})
if not lldb then
return false
end
- -- attempt to split name, e.g. xcrun -sdk macosx lldb
- local names = lldb:split("%s")
-
-- patch arguments
argv = argv or {}
table.insert(argv, 1, "--")
table.insert(argv, 1, program)
table.insert(argv, 1, "-f")
- for i = #names, 2, -1 do
- table.insert(argv, 1, names[i])
- end
-- run it
- os.execv(names[1], argv, table.join(opt, {exclusive = true}))
+ os.execv(executable_path(lldb.program), argv, table.join(opt, {exclusive = true}))
return true
end
-- run windbg
function _run_windbg(program, argv, opt)
-
- -- find windbg
- local windbg = find_windbg({program = config.get("debugger")})
+ local windbg = find_tool("windbg", {program = config.get("debugger")})
if not windbg then
return false
end
@@ -117,15 +94,13 @@ function _run_windbg(program, argv, opt)
-- run it
opt.detach = true
- os.execv(windbg, argv, opt)
+ os.execv(windbg.program, argv, opt)
return true
end
-- run cuda-memcheck
function _run_cudamemcheck(program, argv, opt)
-
- -- find cudamemcheck
- local cudamemcheck = find_cudamemcheck({program = config.get("debugger")})
+ local cudamemcheck = find_tool("cudamemcheck", {program = config.get("debugger")})
if not cudamemcheck then
return false
end
@@ -135,15 +110,13 @@ function _run_cudamemcheck(program, argv, opt)
table.insert(argv, 1, program)
-- run it
- os.execv(cudamemcheck, argv, opt)
+ os.execv(cudamemcheck.program, argv, opt)
return true
end
-- run x64dbg
function _run_x64dbg(program, argv, opt)
-
- -- find x64dbg
- local x64dbg = find_x64dbg({program = config.get("debugger")})
+ local x64dbg = find_tool("x64dbg", {program = config.get("debugger")})
if not x64dbg then
return false
end
@@ -154,15 +127,13 @@ function _run_x64dbg(program, argv, opt)
-- run it
opt.detach = true
- os.execv(x64dbg, argv, opt)
+ os.execv(x64dbg.program, argv, opt)
return true
end
-- run ollydbg
function _run_ollydbg(program, argv, opt)
-
- -- find ollydbg
- local ollydbg = find_ollydbg({program = config.get("debugger")})
+ local ollydbg = find_tool("ollydbg", {program = config.get("debugger")})
if not ollydbg then
return false
end
@@ -173,15 +144,13 @@ function _run_ollydbg(program, argv, opt)
-- run it
opt.detach = true
- os.execv(ollydbg, argv, opt)
+ os.execv(ollydbg.program, argv, opt)
return true
end
-- run vsjitdebugger
function _run_vsjitdebugger(program, argv, opt)
-
- -- find vsjitdebugger
- local vsjitdebugger = find_vsjitdebugger({program = config.get("debugger")})
+ local vsjitdebugger = find_tool("vsjitdebugger", {program = config.get("debugger")})
if not vsjitdebugger then
return false
end
@@ -192,15 +161,13 @@ function _run_vsjitdebugger(program, argv, opt)
-- run it
opt.detach = true
- os.execv(vsjitdebugger, argv, opt)
+ os.execv(vsjitdebugger.program, argv, opt)
return true
end
-- run devenv
function _run_devenv(program, argv, opt)
-
- -- find devenv
- local devenv = find_devenv({program = config.get("debugger")})
+ local devenv = find_tool("devenv", {program = config.get("debugger")})
if not devenv then
return false
end
@@ -212,15 +179,13 @@ function _run_devenv(program, argv, opt)
-- run it
opt.detach = true
- os.execv(devenv, argv, opt)
+ os.execv(devenv.program, argv, opt)
return true
end
-- run renderdoc
function _run_renderdoc(program, argv, opt)
-
- -- find renderdoc
- local renderdoc = find_renderdoc({program = config.get("debugger")})
+ local renderdoc = find_tool("renderdoc", {program = config.get("debugger")})
if not renderdoc then
return false
end
@@ -284,15 +249,14 @@ function _run_renderdoc(program, argv, opt)
opt.detach = true
opt.addenvs = nil
opt.setenvs = nil
- os.execv(renderdoc, { capturefile }, opt)
+ os.execv(renderdoc.program, { capturefile }, opt)
return true
end
-- run gede
function _run_gede(program, argv, opt)
-
- -- find gede
opt = opt or {}
+
-- 'gede --version' return with non-zero code
local gede = find_tool("gede", {program = config.get("debugger"), norun = true})
if not gede then
@@ -312,8 +276,6 @@ end
-- run seergdb
function _run_seergdb(program, argv, opt)
-
- -- find seergdb
opt = opt or {}
local seergdb = find_tool("seergdb", {program = config.get("debugger")})
if not seergdb then