您好,登錄后才能下訂單哦!
xmake中如何運行和調試目標程序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
xmake是一個基于Lua的輕量級現代化c/c++的項目構建工具,主要特點是:語法簡單易上手,提供更加可讀的項目維護,實現跨平臺行為一致的構建體驗。
xmake也提供了run命令,直接運行生成后的可執行文件,用于方便快速的進行測試,例如:
$ xmake run
hello xmake!
我們也可以在xmake.lua中通過add_runenvs
接口來添加設置默認運行target程序的環境變量。
所以,對于PATH這種,通過此接口追加值是非常方便的,而且此接口支持多值設置,所以通常就是用來設置帶有path sep的多值env。。
target("test")
set_kind("binary")
add_files("src/*.c")
add_runenvs("PATH", "/tmp/bin", "xxx/bin")
add_runenvs("LD_LIBRARY_PATH", "/tmp/lib", "xxx/lib")
更多關于此接口的描述,可以看下文檔:add_runenvs接口文檔
如果單純的環境設置,以及默認的加載運行規則不滿足需求,我們可以通過定制化on_run
腳本,實現更加復雜的運行邏輯:
例如,運行安裝好的apk程序:
target("test")
-- ...
-- 設置自定義運行腳本,自動運行安裝好的app程序,并且自動獲取設備輸出信息
on_run(function (target)
os.run("adb shell am start -n com.demo/com.demo.DemoTest")
os.run("adb logcat")
end)
我們也可以傳遞-d
參數,調用gdb/lldb等調試器程序,加載目標文件進行調試:
$ xmake run -d
xmake將會使用系統自帶的調試器去加載程序運行,目前支持:lldb, gdb, windbg, vsjitdebugger, ollydbg 等各種調試器。
[lldb]$target create "build/hello"
Current executable set to 'build/hello' (x86_64).
[lldb]$b main
Breakpoint 1: where = hello`main, address = 0x0000000100000f50
[lldb]$r
Process 7509 launched: '/private/tmp/hello/build/hello' (x86_64)
Process 7509 stopped
* thread #1: tid = 0x435a2, 0x0000000100000f50 hello`main, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000f50 hello`main
hello`main:
-> 0x100000f50 <+0>: pushq %rbp
0x100000f51 <+1>: movq %rsp, %rbp
0x100000f54 <+4>: leaq 0x2b(%rip), %rdi ; "hello world!"
0x100000f5b <+11>: callq 0x100000f64 ; symbol stub for: puts
[lldb]$
我們還可以通過xmake-vscode插件配合vscode來實現對c/c++項目的斷點調試支持。
另外我們還需要依賴vscode的C++插件才能進行調試支持,不過由于開發c/c++程序,這個插件幾乎是必需,所以并沒有太大問題。
就算沒有安裝此插件,xmake-vscode也會加載lldb/gdb/vsjitdebugger等系統調試器,直接加載調試。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。