我試圖使用斷點用於記錄,而不是NSLog
,但我有麻煩訪問像__FUNCTION__
「神奇」的編譯器的變量,__FILE__
等iOS的Objective-C中的XCode:記錄斷點和「魔術」變量
Debugger Command
和Log Message
斷點似乎都以與NSLog相同的方式評估變量。
NSLog(@"%s", __FILE__)
導致的/Users/nbirkholz/Documents/project_name/folder_name/file_name.m
當我設置一個Debugger Command
斷點po __FILE__
正確調試輸出我收到的"Parse" { 'P' 'a' 'r' 's' 'e' <nil>}
調試輸出當我使用p __FILE__
我收到的(const char [6]) $1 = "Parse"
類似的結果調試輸出從p
/po
__func__
/__PRETTY_FUNCTION__
/__FUNCTION__
/__LINE__
po [NSString stringWithFormat:@"file is: %s", __FILE__]
導致 error: too many arguments to method call, expected 1, have 2
po (void)NSLog(@"the file is: %s", __FILE__)
返回<timestamp> <module> the file is: Parse
expr
/expression
(void)NSLog(@"the file is: %s", __FILE__)
給出相同的結果。
同樣,添加Log Message
斷點或者未能計算表達式在所有或產生類似的結果,我似乎無法找到工作在@ @
包封例如表達式語法的the file is @[email protected]
Log Message
相生the file is "Parse"
有沒有辦法讓這個工作沒有直接添加NSLog()
到代碼並讓它正確地評估變量?
我不知道你在問什麼。你似乎在尋找如何在日誌中使用這些編譯器變量,而不是使用NSLog,但似乎給出了工作示例,「當我使用p __FILE__'時,我接收到(const char [6])的調試輸出$ 1 =」解析「」 - 你在期待什麼? – CuriousRabbit 2015-03-18 21:52:30
@CuriousRabbit更新了問題。輸出是不同的。 – 2015-03-18 22:02:52