• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Golang /Go調(diào)試工具delve

            轉(zhuǎn)載自:http://www.jianshu.com/p/cc4621d9c0aa

            原文地址:https://github.com/derekparker/delve/tree/master/Documentation

            安裝

            這里提供了支持的所有平臺(tái)(操作系統(tǒng))上安裝Delve的說明。 請(qǐng)注意您必須安裝Go 1.5或更高版本。 此外如果使用Go 1.5,您必須設(shè)置GO15VENDOREXPERIMENT = 1,然后再嘗試安裝。

            • OSX
              在OSX上插入
              請(qǐng)使用以下步驟在OSX上構(gòu)建和安裝Delve
              Via Homebrew
              如果你安裝了HomeBrew,只需運(yùn)行:

              $ brew install go-delve/delve/delve

            手動(dòng)安裝

            0) 必備條件
            確保您具有正確的編譯工具鏈。
            這應(yīng)該是簡(jiǎn)單的:

            xcode-select --install

            1)創(chuàng)建自簽名證書
            你必須創(chuàng)建自簽名證書,并使用它簽署二進(jìn)制文件:

            1. 打開應(yīng)用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
            2. 打開菜單 /Keychain Access/Certificate Assistant/Create a Certificate...
            3. 選擇一個(gè)名稱(在示例中為dlv-cert),將“Identity Type(身份類型)”設(shè)置為“Self Signed Root(自簽名根)”,將“Certificate Type(證書類型)”設(shè)置為“Code Signing(代碼簽名)”,然后選擇“Let me override defaults(讓我覆蓋默認(rèn)值)”。 單擊“Continue(繼續(xù))”。 您可能想將預(yù)定義的365天期間延長(zhǎng)到3650天。
            4. 單擊“Continue(繼續(xù))”多次,直到進(jìn)入“Specify a Location For The Certificate(指定證書的位置)”頁面,然后將“Keychain to System(鑰匙串設(shè)置為系統(tǒng))”。
            5. 如果您不能將證書存儲(chǔ)在“System(系統(tǒng))”鑰匙扣中,請(qǐng)?jiān)?#8220;login(登錄)”鑰匙扣中創(chuàng)建,然后將其導(dǎo)出。 然后,您可以將其導(dǎo)入到“System(系統(tǒng))”鑰匙扣。
            6. 在鑰匙串中選擇“系統(tǒng)”,你應(yīng)該找到你的新證書。 使用證書的上下文菜單(不是公鑰或私鑰),選擇“獲取信息”,打開“信任”項(xiàng),并將“代碼簽名”設(shè)置為“始終信任”。
            7. [至少在Yosemite上:]在鑰匙串中選擇類別Keys - > dlv-cert - >右鍵單擊 - > GetInfo - >Access Control (訪問控制) - >選擇“允許所有應(yīng)用程序訪問此項(xiàng)目” - >保存更改。
            8. 您必須退出“鑰匙串訪問”應(yīng)用程序,才能使用證書并通過終止當(dāng)前運(yùn)行的“任務(wù)門”進(jìn)程重新啟動(dòng)“任務(wù)門”服務(wù)。 或者,您可以重新啟動(dòng)計(jì)算機(jī)。
              2)二進(jìn)制安裝
              1. 在寫go程序的時(shí)候首先創(chuàng)建文件夾$GOPATH/src/github.com/derekparker 并且cd 到c$GOPATH/src/github.com/derekparker目錄下
              2. clone 這個(gè)項(xiàng)目:git clone https://github.com/derekparker/delve.git 并且cd delve

            注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1,然后才能繼續(xù)安裝。
            GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment。(1.6不需要)

            所有make命令都假設(shè)一個(gè)CERT環(huán)境變量,其中包含上面創(chuàng)建的證書的名稱。 Makefile還假定GOPATH是單值的,不是冒號(hào)分隔的。 makefile只需要幫助促進(jìn)構(gòu)建和代碼簽名的過程。

            • 運(yùn)行以下命令:CERT = dlv-cert make install,它將安裝二進(jìn)制文件并對(duì)其進(jìn)行編碼。
              有關(guān)更多信息,請(qǐng)參閱此安裝視頻https://www.youtube.com/watch?v=4ndjybtBg74
              說明
              在構(gòu)建期間取消代碼簽名授權(quán)提示
              如果在使用自簽名證書運(yùn)行make時(shí)提示您授權(quán),請(qǐng)嘗試以下操作:
              • 打開應(yīng)用程序“鑰匙串訪問”(/ Applications / Utilities / Keychain Access.app)
              • 雙擊與您的自簽名證書(示例中的dlv-cert)對(duì)應(yīng)的私鑰
              • 選擇“Access Control(訪問控制)”選項(xiàng)卡
              • 單擊“始終允許這些應(yīng)用程序訪問”下的[+],然后從Finder對(duì)話框中選擇/ usr / bin / codesign
              • 點(diǎn)擊“(Save changes)保存更改”按鈕
              • 消除“Developer tools access(開發(fā)工具訪問)”提示運(yùn)行delve

            如果運(yùn)行dlv時(shí)出現(xiàn)此提示:

            "Developer tools access needs to take control of another process for debugging to continue. Type your password to allow this"

            嘗試運(yùn)行DevToolsSecurity -enable以消除提示。 有關(guān)更多信息,請(qǐng)參閱man DevToolsSecurity。

            • Linux
              請(qǐng)使用以下步驟在Linux上構(gòu)建和安裝Delve
              在Linux上有兩種安裝方式。 首先是標(biāo)準(zhǔn)的go get方法:

              go get github.com/derekparker/delve/cmd/dlv

            或者,您可以克隆repo并運(yùn)行:

            $ make install

            注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1,然后才能繼續(xù)安裝。 GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment。

            • Windows
              請(qǐng)使用標(biāo)準(zhǔn)的go get命令在Windows上構(gòu)建和安裝Delve

              go get github.com/derekparker/delve/cmd/dlv

            注意:如果您使用Go 1.5必須先設(shè)置GO15VENDOREXPERIMENT = 1,然后才能繼續(xù)安裝。 GO15VENDOREXPERIMENT env var只是選擇進(jìn)入Go 1.5 Vendor Experiment。

            用法

            您可以多種方式調(diào)用Delve,具體取決于您的使用需求。 Delve使每個(gè)嘗試都是用戶友好的,確保用戶必須做最少的工作可能開始調(diào)試他們的程序。

            請(qǐng)參閱主要使用文檔以進(jìn)一步探索命令。

            命令行界面

            命令

            命令 描述
            args 打印函數(shù)參數(shù)
            break 設(shè)置一個(gè)斷點(diǎn)
            breakpoints 打印激活的斷點(diǎn)信息
            clear 刪除斷點(diǎn)
            clearall 刪除所有的斷點(diǎn)
            condition 設(shè)置斷點(diǎn)條件
            continue 運(yùn)行到斷點(diǎn)或程序終止
            disassemble 拆解器
            exit 退出debugger
            frame 在不同的框架上執(zhí)行的命令
            funcs 打印函數(shù)列表
            goroutine 顯示或更改當(dāng)前goroutine
            goroutines 列出程序的全部goroutines
            help 打印出幫助信息
            list 顯示源代碼
            locals 打印局部變量
            next 跳到下一行
            on 在遇到斷點(diǎn)時(shí)執(zhí)行一個(gè)命令
            print 評(píng)估表達(dá)式
            regs 打印CPU寄存器的內(nèi)容
            restart 重啟進(jìn)程
            set 更改變量的值
            source 執(zhí)行包含delve命令列表的文件
            sources 打印源文件列表
            stack 打印堆棧跟蹤
            step 單步執(zhí)行程序
            step-instruction 單步單個(gè)執(zhí)行cpu指令
            thread 切換到指定的線程
            threads 打印每一個(gè)跟蹤線程的信息
            trace 設(shè)置跟蹤點(diǎn)
            types 打印類型列表
            vars 打印某個(gè)包內(nèi)的(全局)變量

            API

            API文檔

            Delve公開了主要可以與Delve編程交互的IDEs和編輯器的一個(gè)API接口,以便這些程序使用。 API由終端使用,因此無論新功能如何,都將始終保持最新的鎖定狀態(tài)。

            使用

            為了在“API模式”中運(yùn)行Delve,只需使用標(biāo)準(zhǔn)命令之一調(diào)用,提供--headless標(biāo)志,如下所示:

            $ dlv debug --headless --api-version=2 --log --listen=127.0.0.1:8181

            這將以非交互模式啟動(dòng)調(diào)試器,偵聽指定的地址,并啟用日志記錄。 當(dāng)然最后兩個(gè)標(biāo)志(log listen)是可選的。
            或者如果您要將多個(gè)客戶端連接到API,也可以指定--accept-multi客戶端標(biāo)志。
            您可以使用connect子命令從Delve本身連接headless調(diào)試器:

            $ dlv connect 127.0.0.1:8181

            這對(duì)于遠(yuǎn)程調(diào)試很有用。

            API 接口

            Delve已經(jīng)可以允許多個(gè)客戶端/服務(wù)器這種方式的架構(gòu)。因?yàn)樗械?#8220;業(yè)務(wù)邏輯”被抽象出實(shí)際的客戶端/服務(wù)器實(shí)現(xiàn),所有允許容易實(shí)現(xiàn)新的API接口。

            當(dāng)前API接口

            JSON-RPC

            內(nèi)部文件

            TODO(derek parker)

            將要做的

            這個(gè)目錄將包含調(diào)試器內(nèi)部和它如何工作的文檔。

            編輯器集成

            可以使用以下用于delve編輯器的插件:
            1. Golang Plugin for IntelliJ IDEAhttps://github.com/go-lang-plugin-org/go-lang-idea-plugin)
            2. Go for Visual Studio Code (https://github.com/Microsoft/vscode-go#go-for-visual-studio-code)
            3. Emacs plugin https://github.com/benma/go-dlv.el/
            4. LiteIDE https://github.com/visualfc/liteide
            5. Go Debugger for Atom
            go-debug
            atom 使用delve 來調(diào)試代碼


            demo.gif


            安裝
            可以使用apm install go-debug或在設(shè)置中搜索go-debug。
            安裝delve
            查閱https://github.com/derekparker/delve/tree/master/Documentation/installation
            綁定的快捷鍵

            f5 運(yùn)行當(dāng)前包 (dlv debug)
            ctrl-f5 測(cè)試運(yùn)行當(dāng)前包(dlv test)
            shift-f5 重新啟動(dòng)當(dāng)前的delve會(huì)話(r / restart)
            f6 停止delve (exit / quit / q)
            f8 繼續(xù)執(zhí)行 (c / continue)
            f9 切換斷點(diǎn)
            f10 到下一個(gè)斷電源(n / next)
            f11 進(jìn)入函數(shù) (s / step)
            cmd-k cmd-g (mac) / ctrl-k ctrl-g (others) 切換主面板

            鏈接
            關(guān)于slack的golang社區(qū):Gopher Slack| go-plus
            問題?請(qǐng)直接在go-plus頻道給我發(fā)送消息

            已知bugs

            • 當(dāng)一個(gè)函數(shù)定義兩個(gè)(或多個(gè))同名的變量時(shí),delve無法區(qū)分它們:locals將打印這兩個(gè)變量,print將隨機(jī)選擇一個(gè)。 參見問題Issue#106。
            • Delve目前不支持32位系統(tǒng)。 這通常表現(xiàn)為proc / disasm.go中的編譯器錯(cuò)誤。 參見問題Issue#20。
            • 當(dāng)Delve使用go之前的版本1.7.0編譯時(shí),不能使用Receiver.Method Name語法在遠(yuǎn)程包中的函數(shù)上設(shè)置斷點(diǎn)。 參見問題Issue#528。


            作者:hehe_Android
            鏈接:http://www.jianshu.com/p/cc4621d9c0aa
            來源:簡(jiǎn)書
            著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

            posted on 2017-10-27 12:54 楊粼波 閱讀(1224) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            超级碰碰碰碰97久久久久| 狠狠狠色丁香婷婷综合久久俺| 99久久免费只有精品国产| 久久精品国产99国产精偷| 久久九九久精品国产免费直播| 久久综合久久鬼色| 久久精品国产乱子伦| 国产精品一区二区久久| 韩国三级中文字幕hd久久精品| 思思久久99热只有频精品66| 久久成人国产精品| 午夜精品久久久久久久无码| 国内精品久久人妻互换| 精品国产婷婷久久久| 青青草原精品99久久精品66| 久久久精品人妻无码专区不卡| 伊人久久大香线蕉亚洲五月天| 九九热久久免费视频| 久久99热只有频精品8| 亚洲精品tv久久久久久久久久| 久久99精品久久久久久hb无码| 狠狠色丁香久久婷婷综合图片| 亚洲一区二区三区日本久久九| 久久狠狠爱亚洲综合影院| 久久精品一区二区影院| 久久亚洲精品中文字幕三区| 久久国产亚洲精品无码| 2021最新久久久视精品爱| 精品久久久久久99人妻| 国产精品久久久久久久久鸭| 午夜精品久久久久久中宇| 婷婷久久综合九色综合绿巨人| 国产呻吟久久久久久久92| 97久久精品午夜一区二区| 久久精品夜夜夜夜夜久久| 亚洲国产精品成人久久| 久久人人爽人人爽人人av东京热| 久久夜色撩人精品国产| 亚洲v国产v天堂a无码久久| 久久乐国产精品亚洲综合| 久久综合五月丁香久久激情|