1. 程式人生 > >除錯lldb命令常用

除錯lldb命令常用

原文:http://blog.sina.com.cn/s/blog_693de6100101cwfe.html

----------------------------------------------------------------

----------------------------------------------------------------

lldb命令常用(備忘)

假如你準備在模擬器裡面執行這個,你可以在“(lldb)”提示的後面輸入下面的:

(lldb) po $eax

LLDB在xcode4.3或者之後的版本里面是預設的偵錯程式。假如你正在使用老一點版本的xcode的話,你又GDB偵錯程式。他們有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的話,你也能夠更隨一起做,而沒有問題。

“po”命令是“print object”(列印物件)的簡寫。“$eax”是cup的一個暫存器。在一個異常的情況下,這個暫存器將會包含一個異常物件的指標。注意:$eax只會在模擬器裡面工作,假如你在裝置上除錯,你將需要使用”$r0″暫存器。

例如,假如你輸入:

(lldb) po [$eax class]

你將會看像這樣的東西:

(id) $2 =0x01446e84NSException

這些數字不重要,但是很明顯的是你正在處理的NSException物件在這裡。

你可以對這個物件呼叫任何方法。例如:

(lldb) po [$eax name]

這個將會輸出這個異常的名字,在這裡是NSInvalidArgumentException,並且:

(lldb) po [$eax reason]

這個將會輸出錯誤訊息:

(unsignedint) $4 =114784400Receiver() has no segue with identifier 'ModalSegue'

注意:當你僅僅使用了“po $eax”,這個命令將會對這個物件呼叫“description”方法和打印出來,在這個情況下,你也會得到錯誤的訊息。

實用LLDB命令

命令名 用法 說明
expr expr 表示式 可以在除錯時動態執行指定表示式,並將結果打印出來,很有用的命令。
po po 表示式 與expr類似,列印物件,會呼叫物件description方法。是print-object
的簡寫
print print (type) 表示式 也是列印命令,需要指定型別。
bt bt [all] 列印呼叫堆疊,是thread backtrace的簡寫,加all可列印所有thread的堆疊。
br l br l breakpoint list的簡寫
process continue l process continue 簡寫:c
thread step-in l thread step-in l 簡寫:s
thread step-inst l thread step-inst l 簡寫:si
thread step-over l thread step-over l 簡寫:n
thread step-over-inst l thread step-over-inst l 簡寫:ni
thread step-out l thread step-out l 簡寫:f
thread list thread list 簡寫:th l

記憶體洩漏隱患提示
Potential Leak of an object allocated on line ……
資料賦值隱患提示
The left operand of …… is a garbage value;
物件引用隱患提示
Reference-Counted object is used after it is released;

對retain、copy、init、release、autorelease等在計數時的使用情況的詳細講解,推薦一下:

呼叫autorelease這意味著,你可以在這個函式裡面使用vari,但是,一旦下一次run loop被呼叫的時候,它就會被髮送release物件。然後引用計數改為0,那麼記憶體也就被釋放掉了。(關於autorelease到底是怎麼工作的,我的理解是:每一個執行緒都有一個autoreleasePool的棧,裡面放了很多autoreleasePool物件。當你向一個物件傳送autorelease訊息之後,就會把該物件加到當前棧頂的autoreleasePool中去。噹噹前runLoop結束的時候,就會把這個pool銷燬,同時對它裡面的所有的autorelease物件傳送release訊息。而autoreleasePool是在當前runLoop開始的時候建立的,並壓入棧頂。那麼什麼是一個runLoop呢?一個UI事件,Timer call, delegate call, 都會是一個新的Runloop。)

當程式崩潰的時候怎麼辦,有如下兩部分(英文版的):

http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1

(中文的part-1)http://article.ityran.com/archives/1006

http://www.raywenderlich.com/10505/my-app-crashed-now-what-part-2

(中文的part-2)http://article.ityran.com/archives/1143

記憶體使用詳細介紹:

http://www.cocoachina.com/bbs/simple/?t94017.html

相關推薦

除錯lldb命令常用

原文:http://blog.sina.com.cn/s/blog_693de6100101cwfe.html ---------------------------------------------------------------- -----------------------------

Xcode基礎知識與除錯lldb命令

1.Xcode IDE概覽 說明:從左到右,依次是“導航窗格(Navigator)->邊列(Gutter)->焦點列(Ribbon)->程式碼編輯視窗(Standard

lldb(gdb)常用除錯命令

1> po:列印物件,會呼叫物件 description 方法。是 print-object 的簡寫 2> expr:可以在除錯時動態執行指定表示式,並將結果打印出來,很有用的命令 3> print:也是列印命令,需要指定型別
 4&

Windbg程式除錯系列1-常用命令說明&示例

Windbg程式除錯是.Net高階開發需要掌握的必備技能,分析記憶體洩露、分析高CPU、分析執行緒阻塞、分析記憶體物件、分析執行緒堆疊、Live Dedugging。這個領域可以說一個技能+場景化應用的結合,如果單學Windbg命令,不理解實際Troubleshooting中的作用,是沒有意義的。所以,準備搞

Windbg程式除錯系列1-常用命令說明&Mex擴充套件使用總結

Windbg程式除錯是.Net高階開發需要掌握的必備技能,分析記憶體洩露、分析高CPU、分析執行緒阻塞、分析記憶體物件、分析執行緒堆疊、Live Dedugging。這個領域可以說一個技能+場景化應用的結合,如果單學Windbg命令,不理解實際Troubleshooting中

ios 除錯技巧收藏二 lldb命令

轉自: http://blog.csdn.net/likendsl/article/details/7576549 XCode4.0以後,編譯器換成了LLVM 編譯器 2.0 與以前相比,更加強大: 1.LLVM 編譯器是下一帶開源的編譯技術.完全支援C, Objec

GDB 除錯幾個常用命令

gdb -c core.14103                           -- 檢視那個程式產生的core檔案 gdb 程式名 core core.14103            

adb 安桌除錯橋的常用命令

1,adb push 【源路徑檔案】  【目標路徑檔案】 將源路徑檔案複製到  目標路徑下 例: adb push c:/c.txt    /mnt/sdcard       //將c 盤下面的 c.txt  複製到 mnt 掛載目錄下的 sdcard 目錄 【解決 s

關於在adb除錯過程中常用的用法及adb命令

本篇主要講解一下幾種關於我們在除錯過程中常用的幾個adb命令及用法,adb連線的具體過程這裡就不再多講 關於怎麼通過adb命令連線手機進行除錯請參考 如何通過PC端連線Android裝置進行adb除錯 首先必須確保你正確配置了AndroidSDK(不然這

git 命令常用總結

是把 最新版 drop 關系 lin 丟失 轉換 某個文件 mail 基礎命令 用戶設置 $ git config --global user.name "Your Name" $ git config --global user.email "[em

ps命令常用選項參數詳解

命令 linux PS命令是什麽ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一時間的進程狀態。如果想要不斷更新查看這個狀態,可以配合watch命令或使用top命令。ps命令支持三種使用的語法格式UNIX 風格:選項可以組合在一起,並且選項前必須有"-"連字符。BSD 風格 :選項可以組合在一

find 命令常用用法

-m find 命令 exec -perm 查找文件 nbsp mtime bsp use 命令格式:   find path -option [-print] [-exec -ok] -print:find 命令將匹配的文件輸出到標準輸出 -exec:find 命令對匹配

shell命令常用功能集

功能 shell命令 bsp style ifconfig conf 常用 空行 con 解析ip地址 ifconfig ethx | awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘ 匹配空行 grep "^$" * shell命令常用功能集

screen命令常用參數使用

-h out man 圖片 oca process hup screen命令 找不到 screen簡要說明 screen 會話命令可以保持本地和服務器斷開後,程序繼續在服務器上運行,並且運行結束後,輸出最後的結果。功能結果相當於 nohup command &,但是

linux系統使用之find命令常用用法集錦

find命令 linux系統 find命令用來在指定目錄下查找文件。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。並且將查找到的子目錄和文件全部進行顯示。find 命令路徑: /bin/find功能描述:文件搜索find [目錄] [條件] [動作][目錄]不輸入代表

linux零基礎學習之Linux sed 命令常用操作詳解

延伸 進行 數據 12px -i 空白 字符串 options 信息 sed是Linux系統中一個很好的文件處理工具,可以對數據進行替換、刪除、新增以及選取等操作,使用起來也十分方面,以下是全面的sed操作介紹。sed命令行格式:sed [options] 'com

mysql命令常用參數實例講解

mysqlmysql命令常用參數實例講解以下是mysql命令常用的參數,配合實例進行簡單講解1,auto-rehash自動補全(表名及表中字段) --------------------------------------- [mysql] #no-auto-rehash auto-rehash ------

mysqladmin命令常用參數實例講解

mysqladminmysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ......參數選項:-c number 自動運行次數統計,必須和 -i 一起使用 -i number 間隔多長時間重復執行0)每個兩秒查看一次

inotifywait命令常用參數 Linux周末學習

Linux運維 Linux入門 Linux基礎 Linux雲計算 Inotifywait:在被監控文件或目錄上等待特定文件系統時間(open、close、delete等)發生,執行後處於阻塞狀態,適合在shell腳本中使用;Inotifywatch:收集被監視的文件系統使用度統計數據,指文件系