有人可以解釋Xcode中的這些選項做什麼嗎?Xcode - scribble,guard邊緣和後衛malloc
- 啓用塗鴉
- 啓用保護邊線
- 啓用保護的malloc
它們是什麼以及他們做什麼,他們的用處有多大調試/測試?
謝謝。
有人可以解釋Xcode中的這些選項做什麼嗎?Xcode - scribble,guard邊緣和後衛malloc
它們是什麼以及他們做什麼,他們的用處有多大調試/測試?
謝謝。
Scribble會讓你很明顯的意識到,你在使用內存塊之後使用了一個內存塊,通過覆蓋任何原來在內存塊中的數據。
Guard邊緣和Guard Malloc將幫助您查找內存溢出和(在某種程度上)通過讀寫保護內存塊免費使用,以便在錯誤使用內存時使程序崩潰更爲明顯。
上面的「文檔」鏈接一般是針對Xcode的,但更具體地,RN-MallocOptions涵蓋了這些(和其他)選項的詳細信息。
Jim Kubicek在Debugging Smashed Memory in Obj-C中展示了一個很好的例子,其中包括重要的「如何在Xcode中啓用它們?」問題:
打開「編輯方案」窗口並導航到「診斷」選項卡。你會打開「啓用Scribble」和「Malloc堆棧」。 ...簡而言之,「Enabled Scribble」將使分配器將0xAA寫入新分配的內存,並將0x55寫入釋放的內存。 「Malloc Stack」將記錄你的記憶的分配和自由歷史。
如果你已經讀到這裏,你可能有興趣在蘋果的技術說明:
我問這個,因爲有時我在崩潰我嘗試調試的應用程序,以及Xcode 4指向「int retVal = UIApplicationMain(argc,argv,nil,@」AppDelegate「); 」作爲錯誤的來源。所以我試圖想辦法讓它指向正確的錯誤線。 – SpaceDog 2012-03-06 20:51:04
@DigitalRobot即使他們沒有給出100%的「保護」,如果它是內存錯誤,上面的任何選項都會被啓用,這使得程序更可能更接近實際錯誤所在的位置。 – 2012-03-06 20:57:41
謝謝。這就是我正在尋找的! – SpaceDog 2012-03-06 22:02:41