溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

xmake中如何運行和調(diào)試目標(biāo)程序

發(fā)布時間:2021-12-08 15:52:17 來源:億速云 閱讀:330 作者:柒染 欄目:大數(shù)據(jù)

xmake中如何運行和調(diào)試目標(biāo)程序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

xmake是一個基于Lua的輕量級現(xiàn)代化c/c++的項目構(gòu)建工具,主要特點是:語法簡單易上手,提供更加可讀的項目維護(hù),實現(xiàn)跨平臺行為一致的構(gòu)建體驗。

運行生成目標(biāo)

xmake也提供了run命令,直接運行生成后的可執(zhí)行文件,用于方便快速的進(jìn)行測試,例如:

$ xmake run
hello xmake!
   
添加運行環(huán)境變量

我們也可以在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)
   

調(diào)試程序

 
命令行調(diào)試

我們也可以傳遞-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]$
   
使用vscode進(jìn)行斷點調(diào)試

我們還可以通過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)試。

xmake中如何運行和調(diào)試目標(biāo)程序

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(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)容。

AI