2012-03-16 46 views
29

我試圖解決的iOS錯誤「發送到釋放實例的消息」。相當於GDB的「info malloc-history <address>」命令的LLDB?

+0

使用的儀器,它給你的信息。 – 2012-03-16 14:29:41

+2

@Richard,使用殭屍工具將幫助您調試,但有時它是好的,知道的malloc的歷史,而坐在GDB。 – 2012-04-23 18:36:21

+0

如果儀器不鎖定機器 – 2016-12-09 01:35:55

回答

0

你曾經是能夠從外殼使用malloc_history命令行工具,並給它的進程ID和感興趣的地址。看來這個命令不再由最新的Xcode的命令行工具安裝。 :-(

+0

malloc_history已安裝併爲我工作,在Xcode 4.6.3這將是罰款。 – manylegged 2013-08-25 01:25:52

2

使用樂器,你會得到確切的行 -

(在Xcode)運行它通過 「產品」 - > 「個人資料」

這將啓動儀器,有。你應該選擇「植物大戰殭屍」和重現bug事件。

You'l得到一個彈出一次殭屍被調用時,按字形,看看具體的線

問題通常是一個壞__bridge(可選橋樑__brige_retained/__bridge_transfer/__bridge

+0

這對我來說非常合適。非常感謝! – 2012-11-14 15:45:13

+0

我不太清楚確切的路線。我可能會做錯什麼? – lwdthe1 2017-01-26 03:51:53

+0

@ lwdthe1您可以在Xcode輸出中看到消息被髮送到的釋放類 - 它會給您一個關於釋放實例的提示。 – avishic 2017-01-26 11:06:07

39

見LLDB-GDB命令映射(http://lldb.llvm.org/lldb-gdb.html) - 你必須輸入一個腳本,該命令現在malloc_info命名。顯然,malloc堆棧日誌記錄仍然需要在方案選項中打開。

(lldb) script import lldb.macosx.heap 
(lldb) malloc_info --stack-history 0x10010d680 

不幸的是,它不顯示dealloc的 - 沒有GDB的malloc歷史顯示,以及?

+0

當我查看鏈接頁面時,它將這些命令顯示爲「僅在Mac OS X上可用」 – 2013-10-09 05:44:18

+5

對於我來說,第一行必須是'command script import lldb.macosx.heap',否則控制檯會報告'錯誤:'malloc_info'不是一個有效的命令。' (Mac OS) – 2014-10-31 05:43:15

+0

'(lldb)script import lldb.macosx.heap' * >>>安裝了「crashlog」和「save_crashlog」命令,請使用「--help」選項獲得詳細幫助 「malloc_info」,「ptr_refs 」,‘cstr_refs’,‘find_variable’和‘objc_refs’命令已被安裝,使用了‘關於這些命令的詳細幫助--help’選項。* – tinkl 2016-05-20 05:56:39