วิธีการเปิดใช้งาน NSZombie ใน Xcode


302

ฉันมีแอพที่หยุดทำงานโดยไม่มีข้อผิดพลาดในการติดตาม ฉันสามารถเห็นส่วนหนึ่งของสิ่งที่เกิดขึ้นถ้าฉัน debug แต่ไม่สามารถคิดออกได้ว่าวัตถุใดเป็น "zombie-ing"

ใครบ้างรู้วิธีเปิดใช้งาน NSZombie ใน Xcode 4

คำตอบ:


440

ตัวแปรสภาพแวดล้อมตอนนี้เป็นส่วนหนึ่งของ "โครงการ"

วิธีแก้ไขและเปิดซอมบี้:

  • ในเมนู "ผลิตภัณฑ์" เลือก "แก้ไขแบบแผน"

  • ไปที่ขั้นตอน "เรียกใช้ Foo.app" ในแผงด้านซ้ายและแท็บ "อาร์กิวเมนต์" ทางด้านขวา

  • เพิ่มNSZombieEnabledในส่วน "ตัวแปรสภาพแวดล้อม" และตั้งค่าYESเป็นเช่นเดียวกับที่คุณทำใน Xcode 3


ใน Xcode 4.1 ขึ้นไปยังมีช่องทำเครื่องหมายบนแท็บ "การวินิจฉัย" ของสเตจ "เรียกใช้" เป็น "เปิดใช้งานออบเจ็กต์ซอมบี้"


ด้วย Xcode 6.4:

ภาพหน้าจอ


5
ไม่หยุดการโทรไปยังวัตถุที่จัดสรรคืนบนอุปกรณ์ไม่ว่าจะเกิดอะไรขึ้น?
jjxtra

95
มันเปลี่ยนไปอีกครั้งใน 4.2 ดูคำตอบของฉันด้านล่าง ไปที่ผลิตภัณฑ์ -> แก้ไขแบบแผน
Moshe Kravchik

ใน Xcode ในเมนูช่วยเหลือที่ด้านบน (อันสุดท้ายทางด้านขวา) ค้นหา "แก้ไขแบบแผน" มันจะนำคุณไปสู่ทิศทางที่ถูกต้องทุกครั้งในทุกรุ่น
unom

หากเราเปิดใช้งานฟีเจอร์นี้ของ NSZombieEnabled ให้แอพของเราเราจะปล่อยแอพที่จะจัดเก็บ .. ? เพราะฉันเห็นโพสต์หนึ่งบอกว่ามันไม่ได้เป็นวิธีที่ดีที่จะเผยแพร่เพื่อจัดเก็บเมื่อเราเปิดใช้งานคุณลักษณะนี้
SURESH SANKE

2
สำหรับมือใหม่ที่ตามมาใน Xcode 6.1 คุณไปที่เมนูผลิตภัณฑ์> Scheme-Edit Scheme> แท็บการวินิจฉัย> ช่องทำเครื่องหมายเปิดใช้งานวัตถุผีดิบ
Joshua Dance

146

ฉันพบปัญหาเดียวกันกับการแก้ไขปัญหา EXC_BAD_ACCESS และมีเวลายากในการค้นหาการตั้งค่าด้วย Xcode 4.2 (ตัวล่าสุดที่มาพร้อมกับ iOS5 SDK) แอปเปิลยังคงเดินหน้าต่อไปและการตั้งค่าต่าง ๆ ไม่เคยเป็นมาก่อน

โชคดีที่ฉันเจอแล้วมันใช้งานได้กับอุปกรณ์ไม่ใช่แค่เครื่องมือจำลอง คุณต้องเปิดเมนูผลิตภัณฑ์ใน Xcode เลือกแก้ไขชุดรูปแบบจากนั้นเลือกแท็บการวินิจฉัย คุณมี "เปิดใช้งานวัตถุซอมบี้" เมื่อเลือกและรันในดีบักเกอร์จะนำคุณไปยังวัตถุที่ถูกปล่อยสองครั้ง! สนุก!

ในระยะสั้น

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects

2
ใน Xcode ในเมนูช่วยเหลือที่ด้านบน (อันสุดท้ายทางด้านขวา) ค้นหา "แก้ไขแบบแผน" มันจะนำคุณไปสู่ทิศทางที่ถูกต้องทุกครั้งในทุกรุ่น
unom

43

ผลิตภัณฑ์> โปรไฟล์จะเปิดใช้งานเครื่องมือจากนั้นคุณควรจะมี "เทมเพลตการติดตาม" ชื่อ "ซอมบี้" อย่างไรก็ตามเทมเพลตการติดตามนี้จะใช้ได้เฉพาะในกรณีที่ปลายทางการสร้างปัจจุบันเป็นเครื่องจำลอง - มันจะไม่สามารถใช้ได้หากคุณมีปลายทางที่ตั้งไว้ในอุปกรณ์ iOS ของคุณ

อีกสิ่งที่ควรทราบคือไม่มีเครื่องดนตรีซอมบี้จริงในคลังเครื่องมือ เทมเพลตการติดตามซอมบี้จริง ๆ แล้วประกอบด้วยเครื่องมือการจัดสรรด้วยชุดการเปิดใช้ "การเปิดใช้งานการตรวจจับ NSZombie"


13
"อย่างไรก็ตามเทมเพลตการติดตามนี้จะใช้ได้เฉพาะในกรณีที่ปลายทางการสร้างปัจจุบันคือเครื่องจำลอง" ขอบคุณ!
ajh158

ขอบคุณนั่นคือสิ่งที่ฉันกำลังมองหา!
Cliff Ribaudo

ใน Xcode ในเมนูช่วยเหลือที่ด้านบน (อันสุดท้ายทางด้านขวา) ค้นหา "แก้ไขแบบแผน" มันจะนำคุณไปสู่ทิศทางที่ถูกต้องทุกครั้งในทุกรุ่น
unom

25

มันเป็นเรื่องง่าย ๆ ในการตั้งค่าตัวแปรสภาพแวดล้อมในการปฏิบัติการของคุณ(NSZombieEnabled = YES)จากนั้นเรียกใช้ / ดีบักแอปของคุณตามปกติหากคุณส่งข้อความถึงซอมบี้แอปของคุณจะหยุดทำงาน / พักเพื่อดีบักและNSLogข้อความสำหรับคุณ

สำหรับข้อมูลเพิ่มเติมดูที่หน้า CocoaDev นี้: http://www.cocoadev.com/index.pl?NSZombieEnabled

นอกจากนี้กระบวนการนี้จะกลายเป็นเรื่องง่ายขึ้นด้วยการเปิดตัว 10.6 และ Xcode and Instruments เวอร์ชั่นถัดไป แค่พูด'. =)


เห็นด้วยอย่างยิ่ง. เครื่องดนตรี Zombies ใหม่นั้นดีมาก
Quinn Taylor

22

ผลิตภัณฑ์> โปรไฟล์จะแสดงเครื่องมือ เลือกซอมบี้จากพาเนลและไปบ้า


5
@jluebbert ฉันจะบอกว่าพยายามให้มากขึ้นเพราะฉันเห็นมันอย่างแน่นอนโดยใช้ Xcode 4.02
garageàtrois

16

ไปที่ผลิตภัณฑ์ - รูปแบบ - แก้ไขรูปแบบ - อาร์กิวเมนต์ -ชุดตัวแปรสภาพแวดล้อมNSZombieEnabled = YES

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


12

ใน xcode 4.2

ไปที่ผลิตภัณฑ์ -> แก้ไขชุดรูปแบบ -> คลิกเรียกใช้ yourappname.app -> Diagonostics -> เปิดใช้งานวัตถุซอมบี้



6

ในฐานะของ Xcode 3.2.5 และเสือดาวหิมะ (Mac OS X 10.6) Run > Run with Performance Tool > Zombiesคุณสามารถเรียกใช้รหัสผ่านเครื่องมือซอมบี้: ที่ช่วยให้คุณเห็นวัตถุเฉพาะและการเก็บรักษาไว้ในเส้นเวลา


1
ฉันเห็นตัวเลือกซอมบี้ แต่มันก็เป็นสีเทา คุณรู้วิธีการเปิดใช้งานหรือไม่
ราหุลวายยาส

@RahulVyas ฉันไม่เคยเห็นมาก่อน แต่คุณได้เปิดการเก็บขยะหรือไม่ ฉันเห็นว่าซอมบี้ไม่สมเหตุสมผลในบริบทนั้น
Dov

ฉันได้เปิดการรวบรวมขยะในการตั้งค่าที่แสดงให้เห็นถึงการสนับสนุน [-fobjc-gc] แต่ยังคงปิดใช้งานตัวเลือกนั้น Infact มีเพียง 5 ตัวเลือกล่าสุดเท่านั้นที่เปิดใช้งานในหมวดหมู่เครื่องมือ ความคิดอื่น ๆ ? หรือฉันกำลังทำอะไรผิดพลาด?
ราหุลไวยา

@RahulVyas: ขออภัยที่จะชัดเจนกว่าฉันคิดว่าการปิดการรวบรวมขยะอาจจะเปิดใช้งาน Zombies เนื่องจากฉันคิดว่ามันเป็นไปไม่ได้ที่จะมีซอมบี้ที่มีการเก็บขยะ หากยังไม่สามารถแก้ไขได้ฉันขอแนะนำให้อ่านเอกสารเครื่องมือ (พวกเขามีการเขียนที่ดีในแต่ละเครื่องมือ) และหากคุณยังไม่ได้รับมันให้โพสต์คำถามที่นี่เพื่อรับความสนใจที่กว้างขึ้น .
Dov

4

ใน Xcode 4.5.2 goto Product -> Edit Scheme -> และภายใต้แท็บ Diagnostics ทำเครื่องหมายในช่องระหว่าง Objective C และ Enable Zombie Objects แล้วคลิก OK


3

หากต้องการเปิดใช้งานการบันทึก Zombie ให้คลิกสองครั้งที่ไฟล์ปฏิบัติการในกลุ่มไฟล์ปฏิบัติการของโครงการ Xcode ของคุณ ณ จุดนี้ให้คลิกที่แท็บข้อโต้แย้งและในVariables to be set in the environment:ส่วนให้ที่เรียกว่าตัวแปรและการตั้งค่าของNSZombieEnabledYES


3

ใน XCode 4.0: ในการตรวจจับ NSZombie in Instruments ให้เลือก Simulator เป็นเป้าหมายของคุณ (ไม่สามารถตรวจจับ NSZomboe บนอุปกรณ์) เรียกใช้เครื่องมือ (CMD + I) และเลือกเทมเพลตการติดตาม "ซอมบี้" สนุก.


2

ในการตั้งค่าของปฏิบัติการของคุณเพิ่มตัวแปรสภาพแวดล้อมและการตั้งค่าไปNSZombieEnabledYES


2

ใน ur XCODE (4.3) ถัดจากปุ่มเล่น :) (รัน)

เลือก: แก้ไขชุดรูปแบบ

หน้าต่างการจัดการโครงการจะเปิดขึ้น

คลิกที่แท็บอาร์กิวเมนต์

คุณควรเห็น: 1- ข้อโต้แย้งที่ส่งผ่านไปยังตัวแปรสภาวะแวดล้อมการเรียกทำงาน 2-

ภายในชื่อสถานที่ (2- ตัวแปรสภาพแวดล้อม): NSZombieEnabled
ค่า: ใช่

และมันเสร็จแล้ว ....


1

NSZombieEnabled ใช้สำหรับการดีบัก BAD_ACCESS

เปิดใช้งานตัวแปรสภาพแวดล้อม NSZombiesEnabled จากแผ่นร่างของ Xcode

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

วิดีโอนี้จะช่วยให้คุณเห็นสิ่งที่ฉันพยายามจะพูด


@kleopatra ขอบคุณคำตอบของฉันด้วยการตั้งค่าที่เหมาะสม
user2554822
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.