diff options
| author | OpportunityLiu <[email protected]> | 2019-07-16 23:42:26 +0800 |
|---|---|---|
| committer | OpportunityLiu <[email protected]> | 2019-07-17 08:45:36 +0800 |
| commit | 15c198bbeeabc8cd2a5196a7f2408d662214fb8c (patch) | |
| tree | f051ae574c36f689d4b19a989abcab8350693c76 /xmake/modules/devel/debugger/run.lua | |
| parent | 887d97e20023e347fb8920d792aa5024b3d8203b (diff) | |
add cuda debugger to debugger.run
Diffstat (limited to 'xmake/modules/devel/debugger/run.lua')
| -rw-r--r-- | xmake/modules/devel/debugger/run.lua | 63 |
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 |
