summaryrefslogtreecommitdiff
path: root/xmake/modules/devel/debugger/run.lua
diff options
context:
space:
mode:
authorOpportunityLiu <[email protected]>2019-07-16 23:42:26 +0800
committerOpportunityLiu <[email protected]>2019-07-17 08:45:36 +0800
commit15c198bbeeabc8cd2a5196a7f2408d662214fb8c (patch)
treef051ae574c36f689d4b19a989abcab8350693c76 /xmake/modules/devel/debugger/run.lua
parent887d97e20023e347fb8920d792aa5024b3d8203b (diff)
add cuda debugger to debugger.run
Diffstat (limited to 'xmake/modules/devel/debugger/run.lua')
-rw-r--r--xmake/modules/devel/debugger/run.lua63
1 files changed, 59 insertions, 4 deletions
diff --git a/xmake/modules/devel/debugger/run.lua b/xmake/modules/devel/debugger/run.lua
index 8f4d0bcec..59c99d7cb 100644
--- a/xmake/modules/devel/debugger/run.lua
+++ b/xmake/modules/devel/debugger/run.lua
@@ -21,6 +21,8 @@
-- imports
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")
@@ -49,6 +51,27 @@ function _run_gdb(program, argv)
return true
end
+-- run cuda-gdb
+function _run_cudagdb(program, argv)
+
+ -- find cudagdb
+ local gdb = find_cudagdb({program = config.get("debugger")})
+ if not gdb then
+ return false
+ end
+
+ -- patch arguments
+ argv = argv or {}
+ table.insert(argv, 1, program)
+ table.insert(argv, 1, "--args")
+
+ -- run it
+ os.execv(gdb, argv)
+
+ -- ok
+ return true
+end
+
-- run lldb
function _run_lldb(program, argv)
@@ -95,6 +118,26 @@ function _run_windbg(program, argv)
return true
end
+-- run cuda-memcheck
+function _run_cudamemcheck(program, argv)
+
+ -- find cudamemcheck
+ local cudamemcheck = find_cudamemcheck({program = config.get("debugger")})
+ if not cudamemcheck then
+ return false
+ end
+
+ -- patch arguments
+ argv = argv or {}
+ table.insert(argv, 1, program)
+
+ -- run it
+ os.execv(cudamemcheck, argv)
+
+ -- ok
+ return true
+end
+
-- run x64dbg
function _run_x64dbg(program, argv)
@@ -172,10 +215,12 @@ end
function main(program, argv)
-- init debuggers
- local debuggers =
+ local debuggers =
{
- {"lldb", _run_lldb}
- , {"gdb", _run_gdb}
+ {"lldb" , _run_lldb}
+ , {"gdb" , _run_gdb}
+ , {"cudagdb" , _run_cudagdb}
+ , {"cudamemcheck", _run_cudamemcheck}
}
-- for windows target or on windows?
@@ -190,10 +235,20 @@ function main(program, argv)
local debugger = config.get("debugger")
if debugger then
debugger = debugger:lower()
+
+ -- try exactmatch first
+ for _, _debugger in ipairs(debuggers) do
+ if debugger:startswith(_debugger[1]) then
+ if _debugger[2](program, argv) then
+ return
+ end
+ end
+ end
+
for _, _debugger in ipairs(debuggers) do
if debugger:find(_debugger[1]) then
if _debugger[2](program, argv) then
- return
+ return
end
end
end