您好,登錄后才能下訂單哦!
xmake中如何運行和調(diào)試目標(biāo)程序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
xmake是一個基于Lua的輕量級現(xiàn)代化c/c++的項目構(gòu)建工具,主要特點是:語法簡單易上手,提供更加可讀的項目維護(hù),實現(xiàn)跨平臺行為一致的構(gòu)建體驗。
xmake也提供了run命令,直接運行生成后的可執(zhí)行文件,用于方便快速的進(jìn)行測試,例如:
$ xmake run
hello xmake!
我們也可以在xmake.lua中通過add_runenvs
接口來添加設(shè)置默認(rèn)運行target程序的環(huán)境變量。
所以,對于PATH這種,通過此接口追加值是非常方便的,而且此接口支持多值設(shè)置,所以通常就是用來設(shè)置帶有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")
更多關(guān)于此接口的描述,可以看下文檔:add_runenvs接口文檔
如果單純的環(huán)境設(shè)置,以及默認(rèn)的加載運行規(guī)則不滿足需求,我們可以通過定制化on_run
腳本,實現(xiàn)更加復(fù)雜的運行邏輯:
例如,運行安裝好的apk程序:
target("test")
-- ...
-- 設(shè)置自定義運行腳本,自動運行安裝好的app程序,并且自動獲取設(shè)備輸出信息
on_run(function (target)
os.run("adb shell am start -n com.demo/com.demo.DemoTest")
os.run("adb logcat")
end)
我們也可以傳遞-d
參數(shù),調(diào)用gdb/lldb等調(diào)試器程序,加載目標(biāo)文件進(jìn)行調(diào)試:
$ xmake run -d
xmake將會使用系統(tǒng)自帶的調(diào)試器去加載程序運行,目前支持:lldb, gdb, windbg, vsjitdebugger, ollydbg 等各種調(diào)試器。
[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來實現(xiàn)對c/c++項目的斷點調(diào)試支持。
另外我們還需要依賴vscode的C++插件才能進(jìn)行調(diào)試支持,不過由于開發(fā)c/c++程序,這個插件幾乎是必需,所以并沒有太大問題。
就算沒有安裝此插件,xmake-vscode也會加載lldb/gdb/vsjitdebugger等系統(tǒng)調(diào)試器,直接加載調(diào)試。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。