控制台命令除錯 bt

2021-06-22 07:04:58 字數 2514 閱讀 1134

第一、llvm簡介

llvm是構架

編譯器(compiler)的框架系統,以c++編寫而成,用於優化以任意程式語言編寫的程式的編譯時間(compile-time)、鏈結時間(link-time)、執行時間(run-time)以及空閒時間(idle-time),對開發者保持開放,並相容已有指令碼。

第二、 對關注編譯技術的開發人員,llvm提供了很多優點:

現代化的設計

llvm的設計是高度模組化的,使得其**更為清晰和便於排查問題所在。

語言無關的中間**

一方面,這使得透過llvm能夠將不同的語言相互鏈結起來;也使得llvm能夠緊密地與ide互動和整合。

另一方面,發布中間**而非目標**能夠在目標系統上更好地發揮其潛能而又不傷害可除錯性(i.e. 在目標系統上針對本機的硬體環境產生目標**,但又能夠直接通過中間**來進行行級除錯)

作為工具和函式庫

使用llvm提供的工具可以比較容易地實現新的程式語言的優化編譯器或vm,或為現有的程式語言引入一些更好的優化/除錯特性。

第三、使用前提:

1.既然是除錯命令,理所當然的,程式模式應該選擇debug模式。

2.在debug模式下,如果你的程式在執行中崩潰(crash)掉,那麼恭喜你,使用lldb除錯的機會來了。

符合以上兩個條件之後,控制台(即日誌輸出視窗all output)會自動打出乙個(lldb)命令,此時你就可以進行除錯。

第四、常用的除錯命令

po是print-object的簡寫,可用來列印所有nsobject物件。sample code:

(lldb)po self.view

; layer = ; contentoffset: >

(lldb)po self

p是print的簡寫,可以用來列印所有的簡單型別,如int, float,結構體等。sample code:

[objc]view plain

copy

print?

itemdata item;  

item.nmainid=1

;  item.nsubid=2

;  item.psztitle

=@"hello"

;  nsrect rect=nsmakerect(0, 1

0, 10

, 10);  

除錯命令及輸出結果:

(lldb)print rect

(nsrect) $0 = (x=0, y=10), (width=10, height=10)

(lldb)p item

(itemdata) $3 =

call即是呼叫的意思。其實上述的po和p也有呼叫的功能。因此一般只在不需要顯示輸出,或是方法無返回值時使用callbt

這時xcode會自動輸出最後的一次呼叫堆疊

(lldb)bt

frame #0: 0x00002cdf tabaleview`-[rootviewcontroller initwithstyle:](self=0x09813e90, _cmd=0x009b99c2, style=uitableviewstyleplain) + 127 at rootviewcontroller.m:23

frame #1: 0x004e5add uikit`-[uitableviewcontroller init] + 41

frame #9: 0x036e02f6 graphicsservices`_purpleeventcallback + 776

frame #10: 0x036dfe01 graphicsservices`purpleeventcallback + 46

frame #11: 0x016b4d65 corefoundation`__cfrunloop_is_calling_out_to_a_source1_perform_function__ + 53

frame #12: 0x016b4a9b corefoundation`__cfrunloopdosource1 + 523

frame #13: 0x016df77c corefoundation`__cfrunlooprun + 2156

frame #14: 0x016deac3 corefoundation`cfrunlooprunspecific + 467

frame #15: 0x016de8db corefoundation`cfrunloopruninmode + 123

frame #18: 0x00002c2d tabaleview`main(argc=1, argv=0xbfffee5c) + 141 at main.m:16

js控制台除錯

說到除錯,就是平時在遇到 問題的時候對錯誤 進行的修改以及尋找錯誤的過程。我們通常會利用一些輸出語句來判斷 執行在 塊的何處出現問題。在js中,提到 輸出我們就會自然聯想到alert 但是alert彈出的是乙個個的對話方塊,要進行除錯就必須用滑鼠乙個個地點選確定,這未免過於麻煩。這時候console...

sublime控制台除錯JS

電腦先安裝配置好nodejs環境 在sublime配置新的build system 工具 編譯系統 新編譯系統 開啟之後具體如下 這一步是關鍵,將當前的檔案儲存為 node.sublime build 然後儲存到當前目錄 ctrl shift s 儲存即可 然後在 node.sublime buil...

Git控制台命令

檢視 新增 提交 刪除 找回,重置修改檔案 git help 顯示command的help git show 顯示某次提交的內容 git show id git co 拋棄工作區修改 git co 拋棄工作區修改 git add 將工作檔案修改提交到本地暫存區 git add 將所有修改過的工作檔案...