我有一個斷點動作,並使用下拉菜單中的日誌選項。我想打印出字符串(摘要)值。我這樣做:如何在Xcode 4中打印來自斷點動作的字符串值?
the person name is: @[email protected]
但打印內存地址。我可以切換到調試器命令選項,並做
po f.name
但我失去了我的描述,在第一個選項中使用。使用日誌選項,是否有打印字符串值而不是內存地址的方法?
我有一個斷點動作,並使用下拉菜單中的日誌選項。我想打印出字符串(摘要)值。我這樣做:如何在Xcode 4中打印來自斷點動作的字符串值?
the person name is: @[email protected]
但打印內存地址。我可以切換到調試器命令選項,並做
po f.name
但我失去了我的描述,在第一個選項中使用。使用日誌選項,是否有打印字符串值而不是內存地址的方法?
有幾件事你可以做。從下拉菜單中添加日誌功能,然後添加另一個框並選擇Debugger Command
並輸入po f.name
。
如果你想你的日誌要複雜的多,你可以做更多的東西是這樣的:
the person name is: @(const char *)[(NSString*)[p.name description] UTF8String]@
您最好的選擇可能是隻使用調試器的圖形界面來觀察變量。如果您想記錄消息,請使用NSLog
。
我結束了對同一個斷點使用2個不同的動作。首先是一個日誌,然後是一個帶po varName的調試器命令。只有不足之處,它會打印在2個不同的行。
您可以使用一個動作,像Jason建議的 – Philip007 2012-12-07 10:40:37
這裏是一個解決方案僅使用一個動作,並使用比expr
解決方案更少的字符。
但是,除非你加void
這樣的:
po (void)NSLog(@"the person name is: %@", p.name)
你會得到一個惱人的 「無」 與您記錄打印出來。例如:
(lldb) po NSLog(@"foo")
nil
2013-06-19 14:42:59.025 TheMove[95864:c07] foo
(lldb) po (void)NSLog(@"foo")
2013-06-19 14:43:10.758 TheMove[95864:c07] foo
如果你可以用無生活(我可以)它的速度更快輸入和更容易記住只是po
我試過多次使用@ expr @語法,但很少成功。一個非常簡單的解決方法,謝謝! – LunaCodeGirl 2014-11-29 21:47:07
對我來說,簡直的XCode忽略不管我型。調試器的類型是否重要(即GDB/LLDB)? – futureelite7 2012-06-26 01:09:20
@ futureelite7 GDB和LLDB都應該能夠做到這一點。你可以嘗試使用「Expression」動作而不是「Log Message」,然後在那裏使用「NSLog」。因此,在「表達式」窗口中,您應該輸入如下內容:'(void)NSLog(@「記錄此變量:%@」,aVariable);' – 2012-06-26 03:52:39
@JasonCoco Xcode 4.6中似乎沒有表達式操作。 – Snowcrash 2013-03-07 14:23:36